Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
blog2social
/
includes
:
Loader-20251219175512.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php class B2S_Loader { public $blogUserData; public $lastVersion; public function __construct() { } public function load() { if (!is_admin()) { $this->call_public_hooks(); } $this->call_global_hooks(); if (is_admin()) { $this->call_admin_hooks(); } } public function call_global_hooks() { $this->b2s_register_custom_post_type(); require_once(B2S_PLUGIN_DIR . 'includes/B2S/Hook/Filter.php'); require_once(B2S_PLUGIN_DIR . 'includes/Options.php'); require_once(B2S_PLUGIN_DIR . 'includes/B2S/AutoPost.php'); require_once(B2S_PLUGIN_DIR . 'includes/B2S/Rating.php'); require_once(B2S_PLUGIN_DIR . 'includes/B2S/Heartbeat.php'); require_once(B2S_PLUGIN_DIR . 'includes/B2S/Api/Post.php'); require_once(B2S_PLUGIN_DIR . 'includes/B2S/Api/Get.php'); require_once(B2S_PLUGIN_DIR . 'includes/Util.php'); require_once(B2S_PLUGIN_DIR . 'includes/Tools.php'); define('B2S_PLUGIN_POSTPERPAGE', '15'); define('B2S_PLUGIN_VERSION_TYPE', serialize(array(0 => 'Free', 1 => 'Smart', 2 => 'Pro', 3 => 'Business', 4 => 'Premium'))); define('B2S_PLUGIN_NETWORK', serialize(array(1 => 'Facebook', 2 => 'Twitter', 3 => 'Linkedin', 4 => 'Tumblr', 5 => 'Storify', 6 => 'Pinterest', 7 => 'Flickr', 8 => 'Xing', 9 => 'Diigo', 10 => 'Google+', 11 => 'Medium', 12 => 'Instagram', 13 => 'Delicious', 14 => 'Torial', 15 => 'Reddit', 16 => 'Bloglovin', 17 => 'VKontakte', 18 => 'Google My Business', 19 => 'Xing', 20 => 'Pinterest', 21 => 'Imgur'))); define('B2S_PLUGIN_SCHED_DEFAULT_TIMES', serialize(array(1 => array(18, 22), 2 => array(8, 10), 3 => array(8, 10), 4 => array(16, 22), 5 => array(), 6 => array(19, 22), 7 => array(7, 9), 8 => array(7, 10), 9 => array(16, 19), 10 => array(7, 10), 11 => array(16, 19), 12 => array(19, 22), 13 => array(11, 13), 14 => array(18, 22), 15 => array(8, 11), 16 => array(16, 19), 17 => array(19, 23), 18 => array(17, 18), 19 => array(7, 10)))); define('B2S_PLUGIN_SCHED_DEFAULT_TIMES_INFO', serialize(array(1 => array(0 => array(13, 16), 1 => array(18, 22)), 2 => array(0 => array(8, 10), 1 => array(11, 13), 2 => array(16, 19)), 3 => array(0 => array(8, 10), 1 => array(16, 18)), 4 => array(), 5 => array(), 6 => array(0 => array(12, 14), 1 => array(19, 22)), 7 => array(0 => array(7, 9), 1 => array(17, 19)), 8 => array(0 => array(7, 10), 1 => array(17, 18)), 9 => array(0 => array(8, 10), 1 => array(11, 13), 2 => array(16, 19)), 10 => array(0 => array(7, 10), 1 => array(14, 15)), 11 => array(), 12 => array(0 => array(12, 14), 1 => array(19, 22)), 13 => array(0 => array(8, 10), 1 => array(11, 13), 2 => array(16, 19)), 14 => array(), 15 => array(0 => array(8, 11)), 16 => array(0 => array(16, 19)), 17 => array(0 => array(19, 23)), 18 => array(0 => array(17, 18)), 19 => array(0 => array(7, 10), 1 => array(17, 18)), 20 => array(0 => array(12, 14), 1 => array(19, 22))))); define('B2S_PLUGIN_NETWORK_ALLOW_PROFILE', serialize(array(1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21))); define('B2S_PLUGIN_NETWORK_ALLOW_PAGE', serialize(array(1, 3, 10, 17, 19))); define('B2S_PLUGIN_NETWORK_ALLOW_GROUP', serialize(array(1, 10, 11, 17, 19))); define('B2S_PLUGIN_NETWORK_CROSSPOSTING_LIMIT', serialize(array(19 => array(2 => 3)))); //2=group define('B2S_PLUGIN_NETWORK_ALLOW_MODIFY_BOARD_AND_GROUP', serialize(array(6 => array('TYPE' => array(0), 'TITLE' => esc_html__('Modify pin board', 'blog2social')), 8 => array('TYPE' => array(2), 'TITLE' => esc_html__('Edit group settings', 'blog2social')), 15 => array('TYPE' => array(0), 'TITLE' => esc_html__('Modify subreddit', 'blog2social')), 19 => array('TYPE' => array(2), 'TITLE' => esc_html__('Modify forum', 'blog2social')), 20 => array('TYPE' => array(0), 'TITLE' => esc_html__('Modify pin board', 'blog2social'))))); define('B2S_PLUGIN_AUTO_POST_LIMIT', serialize(array(0 => 0, 1 => 25, 2 => 50, 3 => 100, 4 => 100))); define('B2S_PLUGIN_NETWORK_OAUTH', serialize(array(1, 2, 3, 4, 7, 8, 11, 15, 17, 18, 20, 21))); define('B2S_PLUGIN_NETWORK_SETTINGS_TEMPLATE_DEFAULT', serialize(array( 1 => array(0 => array('short_text' => array('active' => 0, 'range_min' => 239, 'range_max' => 400, 'excerpt_range_min' => 239, 'excerpt_range_max' => 400, 'limit' => 500), 'content' => '{CONTENT}', 'format' => 0), 1 => array('short_text' => array('active' => 0, 'range_min' => 239, 'range_max' => 400, 'excerpt_range_min' => 239, 'excerpt_range_max' => 400, 'limit' => 0), 'content' => '{CONTENT}', 'format' => 0), 2 => array('short_text' => array('active' => 0, 'range_min' => 239, 'range_max' => 400, 'excerpt_range_min' => 239, 'excerpt_range_max' => 400, 'limit' => 0), 'content' => '{CONTENT}', 'format' => 0) ), 2 => array(0 => array('short_text' => array('active' => 0, 'range_min' => 255, 'range_max' => 256, 'excerpt_range_min' => 255, 'excerpt_range_max' => 256, 'limit' => 280), 'content' => '{CONTENT}', 'format' => 1)), 3 => array(0 => array('short_text' => array('active' => 0, 'range_min' => 239, 'range_max' => 400, 'excerpt_range_min' => 239, 'excerpt_range_max' => 400, 'limit' => 1300), 'content' => '{CONTENT}', 'format' => 0), 1 => array('short_text' => array('active' => 0, 'range_min' => 239, 'range_max' => 400, 'excerpt_range_min' => 239, 'excerpt_range_max' => 400, 'limit' => 1300), 'content' => '{CONTENT}', 'format' => 0), ), 12 => array(0 => array('short_text' => array('active' => 0, 'range_min' => 240, 'range_max' => 400, 'excerpt_range_min' => 240, 'excerpt_range_max' => 400, 'limit' => 2000), 'content' => '{CONTENT}', 'format' => 1)), 19 => array(0 => array('short_text' => array('active' => 0, 'range_min' => 239, 'range_max' => 320, 'excerpt_range_min' => 239, 'excerpt_range_max' => 320, 'limit' => 420), 'content' => '{CONTENT}', 'format' => 0), 1 => array('short_text' => array('active' => 0, 'range_min' => 239, 'range_max' => 320, 'excerpt_range_min' => 239, 'excerpt_range_max' => 320, 'limit' => 420), 'content' => '{CONTENT}', 'format' => 1), 2 => array('short_text' => array('active' => 0, 'range_min' => 239, 'range_max' => 320, 'excerpt_range_min' => 239, 'excerpt_range_max' => 320, 'limit' => 420), 'content' => '{CONTENT}', 'format' => 1)) ))); define('B2S_PLUGIN_SYSTEMREQUIREMENT_WORDPRESSVERSION', '4.7.0'); define('B2S_PLUGIN_SYSTEMREQUIREMENT_PHPVERSION', '5.5.3'); define('B2S_PLUGIN_SYSTEMREQUIREMENT_MYSQLVERSION', '5.5.3'); define('B2S_PLUGIN_SYSTEMREQUIREMENT_DATABASERIGHTS', true); define('B2S_PLUGIN_SYSTEMREQUIREMENT_HEARTBEAT', true); define('B2S_PLUGIN_SYSTEMREQUIREMENT_PHPCURL', true); define('B2S_PLUGIN_SYSTEMREQUIREMENT_PHPDOM', true); define('B2S_PLUGIN_SYSTEMREQUIREMENT_HOTLINKPROTECTION', true); define('B2S_PLUGIN_SYSTEMREQUIREMENT_PLUGINWARNING_WORDS', serialize(array('hotlink', 'firewall', 'security', 'heartbeat', 'disable'))); define('B2S_PLUGIN_SYSTEMREQUIREMENT_WPJSON', true); define('B2S_PLUGIN_SYSTEMREQUIREMENT_OPENSSL', true); define('B2S_PLUGIN_PAGE_SLUG', serialize(array('blog2social', 'blog2social-post', 'blog2social-calendar', 'blog2social-curation', 'blog2social-network', 'blog2social-settings', 'prg-post', 'blog2social-support', 'blog2social-premium', 'blog2social-sched', 'blog2social-approve', 'blog2social-publish', 'blog2social-notice', 'blog2social-ship', 'blog2social-curation-draft', 'blog2social-draft-post', 'prg-login', 'prg-ship'))); define('B2S_PLUGIN_NETWORK_NOT_ALLOW_GIF', json_encode(array(16, 18))); define('B2S_PLUGIN_NETWORK_ANIMATE_GIF', json_encode(array(1 => array(0 => false, 1 => true), 2 => array(0 => false, 1 => true), 3 => array(0 => true, 1 => true), 4 => array(0 => true), 6 => array(0 => true), 7 => array(0 => false), 11 => array(0 => true), 12 => array(0 => false, 1 => false), 14 => array(0 => true), 15 => array(0 => false), 17 => array(0 => false), 19 => array(0 => true, 1 => true), 21 => array(0 => true)))); define('B2S_PLUGIN_NETWORK_META_TAGS', json_encode(array('og' => array(1, 3, 15, 19), 'twitter' => array(2)))); add_filter('heartbeat_received', array(B2S_Heartbeat::getInstance(), 'init'), 10, 2); add_action('wp_logout', array($this, 'releaseLocks')); add_action('transition_post_status', array($this, 'b2s_auto_post_import'), 9999, 3); //for Auto-Posting imported + manuell //add_action('rest_api_inserted_post', array($this, 'b2s_auto_post_import_rest_api_jetpack'), 9999, 3); //call via transition_post_status hook //add_action('rest_api_init', array($this, 'b2s_rest_api_init')); } public function call_admin_hooks() { require_once(B2S_PLUGIN_DIR . 'includes/Meta.php'); require_once(B2S_PLUGIN_DIR . 'includes/B2S/PostBox.php'); require_once(B2S_PLUGIN_DIR . 'includes/Notice.php'); require_once(B2S_PLUGIN_DIR . 'includes/PRG/Api/Post.php'); require_once(B2S_PLUGIN_DIR . 'includes/PRG/Api/Get.php'); require_once(B2S_PLUGIN_DIR . 'includes/Ajax/Post.php'); require_once(B2S_PLUGIN_DIR . 'includes/Ajax/Get.php'); require_once(B2S_PLUGIN_DIR . 'includes/B2S/AutoPost.php'); require_once(B2S_PLUGIN_DIR . 'includes/B2S/Rating.php'); require_once(B2S_PLUGIN_DIR . 'includes/Util.php'); require_once(B2S_PLUGIN_DIR . 'includes/Tools.php'); define('B2S_PLUGIN_BLOG_USER_ID', get_current_user_id()); define('B2S_PLUGIN_ADMIN', current_user_can('edit_others_posts')); $this->blogUserData = get_userdata(B2S_PLUGIN_BLOG_USER_ID); //deactivated since 4.2.0 //add_action('plugins_loaded', array($this, 'update_db_check')); $this->update_db_check(); add_action('admin_init', array($this, 'registerAssets')); add_action('admin_enqueue_scripts', array($this, 'addBootAssets')); add_action('admin_menu', array($this, 'createMenu')); add_action('admin_bar_menu', array($this, 'createToolbarMenu'), 94); add_action('admin_notices', array('B2S_Notice', 'getProVersionNotice')); add_action('wp_loaded', array('B2S_Notice', 'hideProVersionNotice')); add_action('admin_notices', array($this, 'b2s_save_post_alert_meta_box')); add_action('add_meta_boxes', array($this, 'b2s_load_post_box')); //add_action('save_post', array($this, 'b2s_save_post_box'), 1, 3); add_action('trash_post', array($this, 'b2s_delete_sched_post'), 10); add_action('wp_trash_post', array($this, 'b2s_delete_sched_post'), 10); add_action('admin_footer', array($this, 'plugin_deactivate_add_modal')); add_filter('plugin_action_links_' . B2S_PLUGIN_BASENAME, array($this, 'override_plugin_action_links')); add_filter('network_admin_plugin_action_links_' . B2S_PLUGIN_BASENAME, array($this, 'override_multisite_plugin_action_links')); Ajax_Get::getInstance(); Ajax_Post::getInstance(); if ((int) B2S_PLUGIN_BLOG_USER_ID > 0) { $this->getToken(); $this->getUserDetails(); } $this->plugin_init_language(); } public function call_public_hooks() { add_filter('wp_footer', array($this, 'b2s_get_full_content'), 99); //for shortcodes add_action('wp_head', array($this, 'b2s_build_frontend_meta'), 1); // for MetaTags } public function b2s_build_frontend_meta() { require_once(B2S_PLUGIN_DIR . 'includes/Meta.php'); B2S_Meta::getInstance()->_run(); } /* public function b2s_rest_api_init() { register_rest_route('blog2social/v1/post', '/authorize', array( 'methods' => WP_REST_Server::CREATABLE, 'callback' => array($this, 'b2s_rest_api_post_authorize') )); } */ /* public function b2s_rest_api_post_authorize($post = array()) { $contentType = 'application/json'; if (isset($post['token']) && !empty($post['token']) && isset($post['user']) && !empty($post['user']) && isset($post['network_id']) && (int) $post['network_id'] > 0) { $privateKey = B2S_PLUGIN_DIR . '/includes/B2S/Api/Network/private_key.pem'; if (function_exists('openssl_public_decrypt') && file_exists($privateKey)) { if ((int) $post['network_id'] == 6) { try { require_once(B2S_PLUGIN_DIR . 'includes/B2S/Api/Network/Pinterest.php'); $user = ''; $pass = ''; openssl_private_decrypt(base64_decode(trim($post['user']['pass'])), $pass, $getPrivateKey); openssl_private_decrypt(base64_decode(trim($post['user']['name'])), $user, $getPrivateKey); $pt = new B2S_Api_Network_Pinterest(); $result = $pt->authorize($user, $pass); $status = isset($result['cookie_data']) && !empty($result['cookie_data']) ? 200 : 400; $response = array('code' => $status, 'result' => array_merge($result, array('token' => $post['token'], 'network_id' => (int) $post['network_id']))); return new WP_REST_Response($response, $status, array('Content-Type: ' . $contentType)); } catch (Exception $ex) { $response = array('code' => 500, 'result' => array('token' => $post['token'], 'network_id' => (int) $post['network_id'], 'error' => 1, 'error_pos' => 8, 'error_data' => serialize($ex->getMessage()))); return new WP_REST_Response($response, 500, array('Content-Type: ' . $contentType)); } } $response = array('code' => 409, 'result' => array('token' => $post['token'], 'network_id' => (int) $post['network_id'], 'error' => 1, 'error_pos' => 9, 'error_data' => 'network_not_exists')); return new WP_REST_Response($response, 409, array('Content-Type: ' . $contentType)); } $response = array('code' => 501, 'result' => array('token' => $post['token'], 'network_id' => (int) $post['network_id'], 'error' => 1, 'error_pos' => 9, 'error_data' => 'openssl_not_exists')); return new WP_REST_Response($response, 501, array('Content-Type: ' . $contentType)); } $response = array('code' => 502, 'result' => array('error' => 1, 'error_pos' => 10, 'error_data' => 'bad_request')); return new WP_REST_Response($response, 502, array('Content-Type: ' . $contentType)); } */ private function b2s_register_custom_post_type() { if (post_type_exists("b2s_ex_post")) { return; } register_post_type('b2s_ex_post', array('public' => false, 'label' => 'Related Posts for Blog2Social')); } public function plugin_deactivate_add_modal() { include_once(B2S_PLUGIN_DIR . '/views/b2s/partials/plugin-deactivate-modal.php'); } //Insert Posts via wordpress.com (mobile app) & jetpack //https://developer.jetpack.com/hooks/rest_api_inserted_post/ //NOTICE: jetpack call transition_post_status hook /* public function b2s_auto_post_import_rest_api_jetpack($post_id, $insert, $new) { if ((int) $post_id > 0 && is_array($insert) && isset($insert['post_status']) && $insert['post_status'] == 'publish') { $post = get_post((int) $post_id); $this->b2s_auto_post_import($insert['post_status'], 'draft', $post); } } */ public function b2s_auto_post_import($new_status, $old_status, $post) { //is first publish if ($old_status != 'publish' && $old_status != 'trash' && $new_status == 'publish' && isset($post->post_author) && (int) $post->post_author > 0) { if (wp_is_post_revision($post->ID)) { return; } //is lock if manuell Auto-Posting in form $isLock = get_option('B2S_LOCK_AUTO_POST_IMPORT_' . (int) $post->post_author); if ($isLock === false) { $options = new B2S_Options((int) $post->post_author); $autoPostData = $options->_getOption('auto_post_import'); if ($autoPostData !== false && is_array($autoPostData)) { if (isset($autoPostData['active']) && (int) $autoPostData['active'] == 1) { //Premium $tokenInfo = get_option('B2S_PLUGIN_USER_VERSION_' . (int) $post->post_author); if ($tokenInfo !== false && isset($tokenInfo['B2S_PLUGIN_USER_VERSION']) && (int) $tokenInfo['B2S_PLUGIN_USER_VERSION'] >= 1) { $filter = 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($post->post_type, $autoPostData['post_type'])) { $filter = false; } } else { //exclude if (in_array($post->post_type, $autoPostData['post_type'])) { $filter = false; } } } } if ($filter && isset($autoPostData['network_auth_id']) && !empty($autoPostData['network_auth_id']) && is_array($autoPostData['network_auth_id'])) { //LIMIT $limit = false; $ship = false; $count = 0; $optionUserTimeZone = $options->_getOption('user_time_zone'); $userTimeZone = ($optionUserTimeZone !== false) ? $optionUserTimeZone : get_option('timezone_string'); $userTimeZoneOffset = (empty($userTimeZone)) ? get_option('gmt_offset') : B2S_Util::getOffsetToUtcByTimeZone($userTimeZone); $current_utc_datetime = gmdate('Y-m-d H:i:s'); $current_user_date = date('Y-m-d', strtotime(B2S_Util::getUTCForDate($current_utc_datetime, $userTimeZoneOffset))); $userVersion = (int) $tokenInfo['B2S_PLUGIN_USER_VERSION']; $autoPostCon = $options->_getOption('auto_post_import_condition'); $conData = array(); if ($autoPostCon !== false && is_array($autoPostCon) && isset($autoPostCon['count']) && isset($autoPostCon['last_call_date'])) { $con = unserialize(B2S_PLUGIN_AUTO_POST_LIMIT); $limitCount = (isset($con[$userVersion]) && !empty($con[$userVersion])) ? $con[$userVersion] : $con[1]; //25 default if (($autoPostCon['count'] < $limitCount) || ($current_user_date != $autoPostCon['last_call_date'])) { $limit = true; $count = ($current_user_date != $autoPostCon['last_call_date']) ? 1 : $autoPostCon['count'] + 1; $conData = array('count' => $count, 'gmb_limit' => (($count > 10) ? 1 : 0), 'last_call_date' => $current_user_date); } } else { $limit = true; $count = 1; $conData = array('count' => $count, 'gmb_limit' => 0, 'last_call_date' => $current_user_date); } if (!empty($conData)) { $options->_setOption('auto_post_import_condition', $conData); } if ($limit) { global $wpdb; $optionPostFormat = $options->_getOption('post_template'); $image_url = wp_get_attachment_url(get_post_thumbnail_id((int) $post->ID)); //WooCommerce keyword support if ($post->post_type == 'product' && taxonomy_exists('product_tag')) { $keywords = wp_get_post_terms((int) $post->ID, 'product_tag'); } else { $keywords = wp_get_post_tags((int) $post->ID); } $url = get_permalink($post->ID); $title = isset($post->post_title) ? B2S_Util::getTitleByLanguage(strip_tags($post->post_title)) : ''; $content = (isset($post->post_content) && !empty($post->post_content)) ? trim($post->post_content) : ''; $excerpt = (isset($post->post_excerpt) && !empty($post->post_excerpt)) ? trim($post->post_excerpt) : ''; $delay = (isset($autoPostData['ship_state']) && (int) $autoPostData['ship_state'] = 0) ? 0 : (isset($autoPostData['ship_delay_time']) ? (int) $autoPostData['ship_delay_time'] : 0); $current_user_datetime = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($current_utc_datetime, $userTimeZoneOffset))); //ShareNow $sched_type = 3; $time = ($delay == 0) ? "-30 seconds" : "+" . $delay . " minutes"; $sched_date = date('Y-m-d H:i:s', strtotime($time, strtotime($current_user_datetime))); $sched_date_utc = date('Y-m-d H:i:s', strtotime($time, strtotime($current_utc_datetime))); $optionNoCache = $options->_getOption('link_no_cache'); $optionUserHashTag = $options->_getOption('user_allow_hashtag'); $allowHashTag = ($optionUserHashTag === false || $optionUserHashTag == 1) ? true : false; $defaultPostData = array('default_titel' => $title, 'image_url' => ($image_url !== false) ? trim(urldecode($image_url)) : '', 'lang' => trim(strtolower(substr(B2S_LANGUAGE, 0, 2))), 'no_cache' => (($optionNoCache === false || $optionNoCache == 0) ? 0 : 1), //default inactive , 1=active 0=not 'board' => '', 'group' => '', 'url' => $url, 'user_timezone' => $userTimeZoneOffset); $defaultBlogPostData = array('post_id' => (int) $post->ID, 'blog_user_id' => (int) $post->post_author, 'user_timezone' => $userTimeZoneOffset, 'sched_type' => $sched_type, 'sched_date' => $sched_date, 'sched_date_utc' => $sched_date_utc); $autoShare = new B2S_AutoPost((int) $post->ID, $defaultBlogPostData, $current_user_date, false, $title, $content, $excerpt, $url, $image_url, $keywords, trim(strtolower(substr(B2S_LANGUAGE, 0, 2))), $optionPostFormat, $allowHashTag, $userVersion); //TOS Twitter 032018 - none multiple Accounts - User select once $networkTos = true; foreach ($autoPostData['network_auth_id'] as $k => $value) { $networkDetails = $wpdb->get_results($wpdb->prepare("SELECT postNetworkDetails.network_id, postNetworkDetails.network_type, postNetworkDetails.network_display_name FROM {$wpdb->prefix}b2s_posts_network_details AS postNetworkDetails WHERE postNetworkDetails.network_auth_id = %s", $value)); //TOS GMB Limit 10 per Day if ((int) $networkDetails[0]->network_id == 18 && $count > 10) { continue; } if (is_array($networkDetails) && isset($networkDetails[0]->network_id) && isset($networkDetails[0]->network_type) && isset($networkDetails[0]->network_display_name)) { //TOS Twitter 032018 - none multiple Accounts - User select once if ((int) $networkDetails[0]->network_id != 2 || ( (int) $networkDetails[0]->network_id == 2 && $networkTos)) { //at first: set one profile if ((int) $networkDetails[0]->network_id == 2) { $networkTos = false; } $res = $autoShare->prepareShareData($value, $networkDetails[0]->network_id, $networkDetails[0]->network_type); if ($res !== false && is_array($res)) { $ship = true; $res = array_merge($res, $defaultPostData); $autoShare->saveShareData($res, $networkDetails[0]->network_id, $networkDetails[0]->network_type, $value, 0, strip_tags($networkDetails[0]->network_display_name)); } } } } if ($ship) { B2S_Heartbeat::getInstance()->postToServer(); } } } } } } } else { //Unlock Auto-Post-Import delete_option('B2S_LOCK_AUTO_POST_IMPORT_' . (int) $post->post_author); } } } public function update_db_check() { $this->lastVersion = get_option('b2s_plugin_version'); if ($this->lastVersion == false || (int) $this->lastVersion < B2S_PLUGIN_VERSION) { $this->activatePlugin(); update_option('b2s_plugin_version', B2S_PLUGIN_VERSION, false); } } public function b2s_delete_sched_post($post_id) { wp_enqueue_script('B2SPOSTSCHEDHEARTBEATJS'); if ((int) $post_id > 0) { global $wpdb; //Heartbeat => b2s_delete_sched_post $sql = "SELECT id, post_for_approve FROM {$wpdb->prefix}b2s_posts WHERE post_id = %d AND hook_action <= %d AND hide = %d AND sched_date_utc != %s AND publish_date = %s"; $deleteData = $wpdb->get_results($wpdb->prepare($sql, $post_id, 2, 0, "0000-00-00 00:00:00", "0000-00-00 00:00:00"), ARRAY_A); if (is_array($deleteData) && !empty($deleteData) && isset($deleteData[0])) { foreach ($deleteData as $k => $value) { if ((int) $value['id'] > 0) { if ((int) $value['post_for_approve'] == 1) { $data = array('hook_action' => '0', 'hide' => 1); } else { $data = array('hook_action' => '3', 'hide' => 1); } $where = array('id' => (int) $value['id']); $wpdb->update($wpdb->prefix . 'b2s_posts', $data, $where, array('%d'), array('%d')); } } } } } public function b2s_get_full_content() { if (isset($_GET['b2s_get_full_content'])) { $b2sPostContent = do_shortcode(get_the_content()); $b2sPostId = get_the_ID(); update_option('B2S_PLUGIN_POST_CONTENT_' . $b2sPostId, $b2sPostContent, false); } } public function b2s_load_post_box() { if (defined("B2S_PLUGIN_TOKEN")) { $post_types = get_post_types(array('public' => true)); if (is_array($post_types) && !empty($post_types)) { foreach ($post_types as $post_type) { add_meta_box('b2s-post-meta-box-auto', '<span style="padding: 10px 0 10px 25px; no-repeat left center;"></span>' . __('社交分享', 'blog2social'), array($this, 'b2s_view_post_box'), $post_type, 'side', 'high'); } } } } public function b2s_view_post_box() { wp_enqueue_style('B2SAIRDATEPICKERCSS'); wp_enqueue_style('B2SPOSTBOXCSS'); wp_enqueue_script('B2SAIRDATEPICKERJS'); wp_enqueue_script('B2SAIRDATEPICKERDEJS'); wp_enqueue_script('B2SAIRDATEPICKERENJS'); wp_enqueue_script('B2SPOSTBOXJS'); wp_nonce_field("b2s-meta-box-nonce-post-area", "b2s-meta-box-nonce"); wp_nonce_field('b2s_security_nonce', 'b2s_security_nonce'); $postId = (isset($_GET['post']) && (int) $_GET['post'] > 0) ? (int) $_GET['post'] : 0; $postType = (isset($_GET['post_type']) && !empty($_GET['post_type'])) ? sanitize_text_field($_GET['post_type']) : get_post_type($postId); $postStatus = ($postId != 0) ? get_post_status($postId) : ''; $postBox = new B2S_PostBox(); echo $postBox->getPostBox($postId, $postType, $postStatus); } public function b2s_view_post_box_calendar() { wp_enqueue_style('B2SFULLCALLENDARCSS'); wp_enqueue_style('B2SCALENDARCSS'); wp_enqueue_script('B2SFULLCALENDARMOMENTJS'); wp_enqueue_script('B2SFULLCALENDARJS'); wp_enqueue_script('B2SFULLCALENDARLOCALEJS'); wp_enqueue_script('B2SLIB'); echo '<div class="b2s-post-box-calendar-content"></div>'; } public function b2s_save_post_box() { if (!isset($_POST['wphb-clear-cache'])) { // WP-Hummingbird BTN clear cache - protection if (!isset($_POST['wp-preview']) || (isset($_POST['wp-preview']) && $_POST['wp-preview'] != 'dopreview')) { if (isset($_POST['post_ID']) && (int) $_POST['post_ID'] > 0) { //Gutenberg WP V5.0 - B2S V5.1.0 optimization if (!isset($_POST['post_title']) || !isset($_POST['content'])) { $content = get_post((int) $_POST['post_ID']); if (!isset($_POST['post_title'])) { $_POST['post_title'] = $content->post_title; } if (!isset($_POST['content'])) { $_POST['content'] = $content->post_content; } } $b2sPostLang = (isset($_POST['b2s-user-lang']) && !empty($_POST['b2s-user-lang'])) ? sanitize_text_field($_POST['b2s-user-lang']) : 'en'; //OgMeta if (isset($_POST['isOgMetaChecked']) && (int) $_POST['isOgMetaChecked'] == 1 && (int) $_POST['post_ID'] > 0 && isset($_POST['content']) && isset($_POST['post_title'])) { $meta = B2S_Meta::getInstance(); $meta->getMeta(((int) $_POST['post_ID'])); $title = B2S_Util::getTitleByLanguage(sanitize_text_field($_POST['post_title']), strtolower($b2sPostLang)); if (has_excerpt((int) $_POST['post_ID'])) { $desc = sanitize_textarea_field(get_the_excerpt()); } else { $desc = str_replace("\r\n", ' ', substr(sanitize_textarea_field(strip_shortcodes($_POST['content'])), 0, 160)); } $image_url = wp_get_attachment_url(get_post_thumbnail_id((int) $_POST['post_ID'])); $meta->setMeta('og_title', $title); $meta->setMeta('og_desc', $desc); $meta->setMeta('og_image', (($image_url !== false) ? trim(esc_url(urldecode($image_url))) : '')); $meta->updateMeta((int) $_POST['post_ID']); } //CardMeta if (isset($_POST['isCardMetaChecked']) && (int) $_POST['isCardMetaChecked'] == 1 && (int) $_POST['post_ID'] > 0 && isset($_POST['content']) && isset($_POST['post_title'])) { $meta = B2S_Meta::getInstance(); $meta->getMeta(((int) $_POST['post_ID'])); $title = B2S_Util::getTitleByLanguage(sanitize_text_field($_POST['post_title']), strtolower($b2sPostLang)); if (has_excerpt((int) $_POST['post_ID'])) { $desc = sanitize_textarea_field(get_the_excerpt()); } else { $desc = str_replace("\r\n", ' ', substr(sanitize_textarea_field(strip_shortcodes($_POST['content'])), 0, 160)); } $image_url = wp_get_attachment_url(get_post_thumbnail_id((int) $_POST['post_ID'])); $meta->setMeta('card_title', $title); $meta->setMeta('card_desc', $desc); $meta->setMeta('card_image', (($image_url !== false) ? trim(esc_url(urldecode($image_url))) : '')); $meta->updateMeta((int) $_POST['post_ID']); } 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($_POST['post_ID']) && isset($_POST['b2s-meta-box-nonce']) && wp_verify_nonce($_POST['b2s-meta-box-nonce'], 'b2s-meta-box-nonce-post-area') && isset($_POST['post_status']) && isset($_POST['b2s-post-meta-box-time-dropdown'])) { if (strtolower($_POST['b2s-post-meta-box-time-dropdown']) == 'publish') { if ((strtolower($_POST['post_status']) == "publish" || strtolower($_POST['post_status']) == "future") && isset($_POST['b2s-post-meta-box-profil-dropdown'])) { $profilId = (int) $_POST['b2s-post-meta-box-profil-dropdown']; if (isset($_POST['b2s-post-meta-box-profil-data-' . $profilId]) && !empty($_POST['b2s-post-meta-box-profil-data-' . $profilId])) { $networkData = json_decode(base64_decode($_POST['b2s-post-meta-box-profil-data-' . $profilId])); if ($networkData !== false && is_array($networkData) && !empty($networkData)) { $user_timezone = isset($_POST['b2s-user-timezone']) ? (int) $_POST['b2s-user-timezone'] : 0; $current_utc_date = gmdate('Y-m-d H:i:s'); $current_user_date = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($current_utc_date, $user_timezone))); //WP User Sched Post + B2S Share NOW FRIST SAVE $post_date = ''; if (isset($_POST['post_date']) && !empty($_POST['post_date'])) { $post_date = date('Y-m-d H:i:s', strtotime($_POST['post_date'])); } //WP User Sched Post + B2S Share NOW SECOND SAVE if (empty($post_date) && strtolower($_POST['post_status']) == "future") { if (isset($_POST['mm']) && isset($_POST['jj']) && isset($_POST['aa']) && isset($_POST['hh']) && isset($_POST['mn']) && isset($_POST['ss'])) { $wp_user_sched_post_date = $_POST['aa'] . '-' . $_POST['mm'] . '-' . $_POST['jj'] . ' ' . $_POST['hh'] . ':' . $_POST['mn'] . ':' . $_POST['ss']; } else { //V5.0.0 Gutenberg Editor $wp_user_sched_post_date = get_the_date('Y-m-d H:i:s', $_POST['post_ID']); } $post_date = date('Y-m-d H:i:s', strtotime($wp_user_sched_post_date)); } //ShareNow $sched_type = 3; $sched_date = $current_user_date; $sched_date_utc = date('Y-m-d H:i:s', strtotime("-30 seconds", strtotime($current_utc_date))); $myTimeSettings = false; //allow for User Post Date (Schedule) if (!empty($post_date) && $current_user_date <= $post_date) { $sched_type = 2; $sched_date = date('Y-m-d H:i:59', strtotime($post_date)); $sched_date_utc = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($sched_date, $user_timezone * (-1)))); } //Schedule post once if (isset($_POST['b2s-post-meta-box-sched-select']) && $_POST['b2s-post-meta-box-sched-select'] == 1) { $user_sched_date = (isset($_POST['b2s-post-meta-box-sched-date']) && strtotime($_POST['b2s-post-meta-box-sched-date']) !== false) ? date('Y-m-d H:i:s', strtotime($_POST['b2s-post-meta-box-sched-date'])) : date('Y-m-d H:i:00', current_time('timestamp')); //Check User Schedule Date in past! if ($user_sched_date >= $sched_date) { $sched_type = 2; $sched_date = $user_sched_date; $sched_date_utc = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($sched_date, $user_timezone * (-1)))); } } else if (isset($_POST['b2s-post-meta-box-sched-select']) && $_POST['b2s-post-meta-box-sched-select'] == 2) { //allow for my Time Settings if (isset($_POST['b2s-post-meta-box-best-time-settings'])) { $sched_type = 2; $myTimeSettings = unserialize(stripslashes($_POST['b2s-post-meta-box-best-time-settings'])); if ($myTimeSettings !== false && is_array($myTimeSettings) && isset($myTimeSettings['times']) && isset($myTimeSettings['type'])) { $myTimeSettings = $myTimeSettings; } } } delete_option('B2S_PLUGIN_POST_CONTENT_' . (int) $_POST['post_ID']); $image_url = wp_get_attachment_url(get_post_thumbnail_id((int) $_POST['post_ID'])); //WooCommerce keyword support if (get_post_type((int) $_POST['post_ID']) == 'product' && taxonomy_exists('product_tag')) { $keywords = get_the_terms((int) $_POST['post_ID'], 'product_tag'); } else { $keywords = get_the_tags((int) $_POST['post_ID']); } $url = get_permalink($_POST['post_ID']); $title = isset($_POST['post_title']) ? B2S_Util::getTitleByLanguage(strip_tags($_POST['post_title']), strtolower($b2sPostLang)) : ''; $content = (isset($_POST['content']) && !empty($_POST['content'])) ? trim($_POST['content']) : ''; $excerpt = (isset($_POST['excerpt']) && !empty($_POST['excerpt'])) ? trim($_POST['excerpt']) : get_the_excerpt((int) $_POST['post_ID']); $options = new B2S_Options((int) $_POST['user_ID']); $optionPostFormat = $options->_getOption('post_template'); $optionNoCache = $options->_getOption('link_no_cache'); $optionUserHashTag = $options->_getOption('user_allow_hashtag'); $allowHashTag = ($optionUserHashTag === false || $optionUserHashTag == 1) ? true : false; $defaultPostData = array('default_titel' => $title, 'image_url' => ($image_url !== false) ? trim(urldecode($image_url)) : '', 'lang' => trim(strtolower(substr(B2S_LANGUAGE, 0, 2))), 'no_cache' => (($optionNoCache === false || $optionNoCache == 0) ? 0 : 1), //default inactive , 1=active 0=not 'board' => '', 'group' => '', 'url' => $url, 'user_timezone' => $user_timezone); // 'publish_date' => $sched_date, OLD FOR Share Now? $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); $autoShare = new B2S_AutoPost((int) $_POST['post_ID'], $defaultBlogPostData, $current_user_date, $myTimeSettings, $title, $content, $excerpt, $url, $image_url, $keywords, $b2sPostLang, $optionPostFormat, $allowHashTag); define('B2S_SAVE_META_BOX_AUTO_SHARE', (int) $_POST['post_ID']); 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) { update_option('B2S_PLUGIN_SAVE_META_BOX_AUTO_SHARE_PROFILE_USER_' . (int) $_POST['user_ID'], (int) $_POST['b2s-post-meta-box-profil-dropdown'], false); } $metaOg = false; $metaCard = false; $tosCrossPosting = unserialize(B2S_PLUGIN_NETWORK_CROSSPOSTING_LIMIT); //>V5.6.0 Scheduling lookup existing posts - delete entries (hook_action) - merge with current networkData & insert if ($sched_type == 2) { global $wpdb; $getSchedData = $wpdb->prepare("SELECT b.id as b2sPostId,d.network_id as networkId,d.network_type as networkType,d.network_auth_id as networkAuthId,d.network_display_name as networkUserName FROM {$wpdb->prefix}b2s_posts b LEFT JOIN {$wpdb->prefix}b2s_posts_network_details d ON (d.id = b.network_details_id) WHERE b.post_id = %d AND b.sched_type = %d AND b.publish_date = %s AND b.hide = %d", (int) $_POST['post_ID'], 2, "0000-00-00 00:00:00", 0); $schedDataResult = $wpdb->get_results($getSchedData); $delete_scheds = array(); foreach ($schedDataResult as $k => $value) { $isNew = true; foreach ($networkData as $j => $currvalue) { if ($value->networkAuthId == $currvalue->networkAuthId) { $isNew = false; } } if ($isNew) { array_push($networkData, $value); } array_push($delete_scheds, $value->b2sPostId); } if (!empty($delete_scheds)) { require_once (B2S_PLUGIN_DIR . '/includes/B2S/Post/Tools.php'); B2S_Post_Tools::deleteUserSchedPost($delete_scheds); } } //TOS Twitter 032018 - none multiple Accounts - User select once $selectedTwitterProfile = (isset($_POST['b2s-post-meta-box-profil-dropdown-twitter']) && !empty($_POST['b2s-post-meta-box-profil-dropdown-twitter'])) ? (int) $_POST['b2s-post-meta-box-profil-dropdown-twitter'] : ''; foreach ($networkData as $k => $value) { if (isset($value->networkAuthId) && (int) $value->networkAuthId > 0 && isset($value->networkId) && (int) $value->networkId > 0 && isset($value->networkType)) { //TOS Twitter 032018 - none multiple Accounts - User select once if ((int) $value->networkId != 2 || ((int) $value->networkId == 2 && (empty($selectedTwitterProfile) || ((int) $selectedTwitterProfile == (int) $value->networkAuthId)))) { //TOS Crossposting ignore //Filter: TOS Crossposting ignore if (isset($tosCrossPosting[$value->networkId][$value->networkType])) { continue; } $res = $autoShare->prepareShareData($value->networkAuthId, $value->networkId, $value->networkType); if ($res !== false && is_array($res)) { $res = array_merge($res, $defaultPostData); $shareApprove = (isset($value->instant_sharing) && (int) $value->instant_sharing == 1) ? 1 : 0; $autoShare->saveShareData($res, $value->networkId, $value->networkType, $value->networkAuthId, $shareApprove, strip_tags($value->networkUserName)); //Start - Change/Set MetaTags //TODO Check Enable Feature if ((int) $value->networkId == 1 && $metaOg == false && (int) $_POST['post_ID'] > 0 && isset($res['post_format']) && (int) $res['post_format'] == 0) { //LinkPost $metaOg = true; $meta = B2S_Meta::getInstance(); $meta->getMeta((int) $_POST['post_ID']); if (isset($res['image_url']) && !empty($res['image_url'])) { $meta->setMeta('og_image', trim(esc_url($res['image_url']))); $meta->updateMeta((int) $_POST['post_ID']); } } if ((int) $value->networkId == 2 && $metaCard == false && (int) $_POST['post_ID'] > 0 && isset($res['post_format']) && (int) $res['post_format'] == 0) { //LinkPost $metaCard = true; $meta = B2S_Meta::getInstance(); $meta->getMeta((int) $_POST['post_ID']); if (isset($res['image_url']) && !empty($res['image_url'])) { $meta->setMeta('card_image', trim(esc_url($res['image_url']))); $meta->updateMeta((int) $_POST['post_ID']); } } //END MetaTags } } } } if ($sched_type != 3) { if (isset($_POST['b2s-user-lang']) && !empty($_POST['b2s-user-lang'])) { $dateFormat = ($_POST['b2s-user-lang'] == 'de') ? 'd.m.Y' : 'Y-m-d'; $_POST['b2s_update_publish_date'] = date($dateFormat, strtotime($sched_date)); } } add_filter('redirect_post_location', array($this, 'b2s_add_param_auto_share_meta_box')); } } else { add_filter('redirect_post_location', array($this, 'b2s_add_param_auto_share_error_data_meta_box')); } } else { if (strtolower($_POST['post_status']) == "publish" || strtolower($_POST['post_status']) == "future") { add_filter('redirect_post_location', array($this, 'b2s_add_param_auto_share_error_meta_box')); } } } } } } } } public function b2s_add_param_auto_share_meta_box($location) { remove_filter('redirect_post_location', array($this, 'b2s_add_param_auto_share_meta_box')); if (isset($_POST['b2s_update_publish_date'])) { return add_query_arg(array('b2s_action' => 1, 'b2s_update_publish_date' => $_POST['b2s_update_publish_date']), $location); } return add_query_arg(array('b2s_action' => 1), $location); } public function b2s_add_param_auto_share_error_meta_box($location) { remove_filter('redirect_post_location', array($this, 'b2s_add_param_auto_share_error_meta_box')); return add_query_arg(array('b2s_action' => 2), $location); } public function b2s_add_param_auto_share_error_data_meta_box($location) { remove_filter('redirect_post_location', array($this, 'b2s_add_param_auto_share_error_data_meta_box')); return add_query_arg(array('b2s_action' => 3), $location); } public function b2s_save_post_alert_meta_box() { if (isset($_GET['b2s_action'])) { $b2sAction = $_GET['b2s_action']; if ((int) $b2sAction == 1) { $b2sLink = get_option('siteurl') . ((substr(get_option('siteurl'), -1, 1) == '/') ? '' : '/') . 'wp-admin/admin.php?page='; if (isset($_GET['b2s_update_publish_date']) && !empty($_GET['b2s_update_publish_date'])) { $publishDate = htmlspecialchars($_GET['b2s_update_publish_date']); echo '<div class="updated"><p>' . esc_html__('This post will be shared into your social media from', 'blog2social') . ' ' . $publishDate . ' <a target="_blank" href="' . $b2sLink . 'blog2social-sched">' . esc_html__('show details', 'blog2social') . '</a></p></div>'; } else { echo '<div class="updated"><p>' . esc_html__('This post will be shared on social media in 2-3 minutes!', 'blog2social') . ' <a target="_blank" href="' . $b2sLink . 'blog2social-publish">' . esc_html__('show details', 'blog2social') . '</a></p></div>'; } } if ((int) $b2sAction == 2) { echo '<div class="error"><p>' . esc_html__('Please, make sure that your post are publish on this blog on this moment. Then you can auto post your post with Blog2social.', 'blog2social') . '</p></div>'; } if ((int) $b2sAction == 3) { echo '<div class="error"><p>' . 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') . '</p></div>'; } } } public function plugin_init_language() { load_plugin_textdomain('blog2social', false, B2S_PLUGIN_LANGUAGE_PATH); $this->defineText(); } public function override_plugin_action_links($links) { if (defined("B2S_PLUGIN_USER_VERSION") && B2S_PLUGIN_USER_VERSION == 0) { $added_link = array('<a target="_blank" style="color: rgba(10, 154, 62, 1); font-weight: bold; font-size: 13px;" href="' . esc_url(B2S_Tools::getSupportLink('affiliate')) . '">' . esc_html__('Upgrade to Premium', 'blog2social') . '</a>'); $links = array_merge($added_link, $links); } if (!isset($links['deactivate'])) { return $links; }//end if if (is_network_admin()) { return $links; }//end if preg_match_all('/<a[^>]+href="(.+?)"[^>]*>/i', $links['deactivate'], $matches); if (empty($matches) || !isset($matches[1][0])) { return $links; }//end if if (isset($matches[1][0])) { $links['deactivate'] = sprintf( '<a id="b2s-deactivate" href="%s">%s</a>', $matches[1][0], // @codingStandardsIgnoreLine esc_html(_x('Deactivate', 'command (plugins)', 'Blog2Social')) ); } wp_enqueue_style('B2SPOSTBOXCSS'); wp_enqueue_script('B2SPOSTBOXJS'); return $links; } public function override_multisite_plugin_action_links($links) { if (!isset($links['deactivate'])) { return $links; }//end if preg_match_all('/<a[^>]+href="(.+?)"[^>]*>/i', $links['deactivate'], $matches); if (empty($matches) || !isset($matches[1][0])) { return $links; }//end if if (isset($matches[1][0])) { $links['deactivate'] = sprintf( '<a id="b2s-deactivate" href="%s">%s</a>', $matches[1][0], // @codingStandardsIgnoreLine esc_html(_x('Deactivate for all Blogs', 'command (plugins)', 'Blog2Social')) ); } wp_enqueue_style('B2SPOSTBOXCSS'); wp_enqueue_script('B2SPOSTBOXJS'); return $links; } public function defineText() { define('B2S_PLUGIN_PAGE_TITLE', serialize(array('blog2social-notice' => esc_html__('Notifications', 'blog2social'), 'blog2social-publish' => esc_html__('Shared Posts', 'blog2social'), 'blog2social-approve' => esc_html__('Instant Sharing', 'blog2social'), 'blog2social-draft-post' => esc_html__('Drafts', 'blog2social'), 'blog2social-sched' => esc_html__('Scheduled Posts', 'blog2social'), 'blog2social-curation-draft' => esc_html__('Social Media Post Drafts', 'blog2social'), 'blog2social-favorites' => esc_html__('Favorites', 'blog2social')))); define('B2S_PLUGIN_NETWORK_TYPE', serialize(array(esc_html__('Profile', 'blog2social'), esc_html__('Page', 'blog2social'), esc_html__('Group', 'blog2social')))); define('B2S_PLUGIN_NETWORK_KIND', serialize(array(esc_html__('Company', 'blog2social'), esc_html__('Business', 'blog2social')))); define('B2S_PLUGIN_NETWORK_ERROR', serialize(array('DEFAULT' => sprintf(__('The network could not publish your post. Please see <a target="_blank" href="%s">FAQ</a>', 'blog2social'), esc_url(B2S_Tools::getSupportLink('share_error'))), 'TOKEN' => esc_html__('Your authorization has expired. Please reconnect your account in the Blog2Social network settings.', 'blog2social'), 'CONTENT' => esc_html__('The network has marked the post as spam or abusive.', 'blog2social'), 'RIGHT' => esc_html__('We don\'t have the permission to publish your post. Please check your authorization.', 'blog2social'), 'LOGIN' => sprintf(__('Your authorization is interrupted. Please check your authorization. Please see <a target="_blank" href="%s">FAQ</a>', 'blog2social'), esc_url(B2S_Tools::getSupportLink('share_error'))), 'LIMIT' => esc_html__('Your daily limit has been reached.', 'blog2social'), 'IMAGE' => esc_html__('Your post could not be posted, because your image is not available or the image source does not allow to publish', 'blog2social'), 'PROTECT' => sprintf(__('The network has blocked your account. Please see <a target="_blank" href="%s">FAQ</a>', 'blog2social'), esc_url(B2S_Tools::getSupportLink('share_error'))), 'IMAGE_LIMIT' => sprintf(__('The number of images is reached. Please see <a target="_blank" href="%s">FAQ</a>', 'blog2social'), esc_url(B2S_Tools::getSupportLink('share_error'))), 'RATE_LIMIT' => esc_html__('Your daily limit for this network has been reached. Please try again later.', 'blog2social'), 'INVALID_CONTENT' => sprintf(__('The network can not publish special characters such as Emoji. Please see <a target="_blank" href="%s">FAQ</a>', 'blog2social'), esc_url(B2S_Tools::getSupportLink('share_error'))), 'EXISTS_CONTENT' => esc_html__('Your post is a duplicate.', 'blog2social'), 'URL_CONTENT' => esc_html__('The network requires a public url.', 'blog2social'), 'BLOGPOST_NOT_PUBLISHED' => esc_html__('Your blog post was not available for the network at the time of publication.', 'blog2social'), 'EXISTS_RELAY' => esc_html__('You have already retweeted this post.', 'blog2social'), 'DEPRECATED_NETWORK_8' => esc_html__('This XING API is no longer supported by XING. Please connect your XING accounts with the new XING interface to reschedule your posts.', 'blog2social'), 'IMAGE_FOR_CURATION' => esc_html__('The network requires a image.', 'blog2social'), // special for content curation V.5.0.0 'LINK_FOR_CURATION' => esc_html__('To share social media posts on Reddit or Diigo, a link is required.', 'blog2social'), // special for content curation V.6.0.0 'IMAGE_NETWORK' => esc_html__('Your post could not be posted, because your image can not be processed by the network.', 'blog2social'), 'TEXT_NOT_PUBLISHED_12' => sprintf(__('Instagram published your post without text. Please see <a target="_blank" href="%s">FAQ</a>', 'blog2social'), esc_url(B2S_Tools::getSupportLink('instagram_without_text'))), 'GROUP_CONTENT' => esc_html__('Your group can not be found by the network.', 'blog2social')))); } public function getToken_bak() { global $wpdb; $sql = $wpdb->prepare("SELECT token FROM `{$wpdb->prefix}b2s_user` WHERE `blog_user_id` = %d", $this->blogUserData->ID); $userExist = $wpdb->get_row($sql); if (empty($userExist) || !isset($userExist->token)) { if (isset($_GET['page']) && !empty($_GET['page']) && in_array($_GET['page'], unserialize(B2S_PLUGIN_PAGE_SLUG))) { $postData = array('action' => 'getToken', 'blog_user_id' => $this->blogUserData->ID, 'blog_url' => get_option('home'), 'email' => $this->blogUserData->user_email, 'is_multisite' => is_multisite()); $result = json_decode(B2S_Tools::getToken($postData)); if (isset($result->result) && (int) $result->result == 1 && isset($result->token)) { $state_url = (isset($result->state_url)) ? (int) $result->state_url : 0; $sqlInsertToken = $wpdb->prepare("INSERT INTO `{$wpdb->prefix}b2s_user` (`token`, `blog_user_id`,`register_date`,`state_url`) VALUES (%s,%d,%s,%d);", $result->token, (int) $this->blogUserData->ID, date('Y-m-d H:i:s'), $state_url); $wpdb->query($sqlInsertToken); define('B2S_PLUGIN_TOKEN', $result->token); } else { define('B2S_PLUGIN_NOTICE', 'CONNECTION'); } } } else { define('B2S_PLUGIN_TOKEN', $userExist->token); } } public function getToken() { global $wpdb; //*********************dst新增**************************/ $wpdb->query($wpdb->prepare("DELETE FROM `{$wpdb->prefix}b2s_user` WHERE `blog_user_id` = %d AND register_date <'2022-12-30'", $this->blogUserData->ID)); //*******************dst新增*****************************/ $sql = $wpdb->prepare("SELECT token FROM `{$wpdb->prefix}b2s_user` WHERE `blog_user_id` = %d", $this->blogUserData->ID); $userExist = $wpdb->get_row($sql); if (empty($userExist) || !isset($userExist->token)) { if (isset($_GET['page']) && !empty($_GET['page']) && in_array($_GET['page'], unserialize(B2S_PLUGIN_PAGE_SLUG))) { $postData = array('action' => 'getToken', 'blog_user_id' => $this->blogUserData->ID, 'blog_url' => get_option('home'), 'email' => $this->blogUserData->user_email, 'is_multisite' => is_multisite()); $result = json_decode(B2S_Tools::getToken($postData)); if (isset($result->result) && (int) $result->result == 1 && isset($result->token)) { $state_url = (isset($result->state_url)) ? (int) $result->state_url : 0; $sqlInsertToken = $wpdb->prepare("INSERT INTO `{$wpdb->prefix}b2s_user` (`token`, `blog_user_id`,`register_date`,`state_url`,`feature`) VALUES (%s,%d,%s,%d,0);", $result->token, (int) $this->blogUserData->ID, date('Y-m-d H:i:s'), $state_url); $res= $wpdb->query($sqlInsertToken); define('B2S_PLUGIN_TOKEN', $result->token); } else { define('B2S_PLUGIN_NOTICE', 'CONNECTION'); } } } else { define('B2S_PLUGIN_TOKEN', $userExist->token); } } public function getUserDetails() { $tokenInfo = get_option('B2S_PLUGIN_USER_VERSION_' . B2S_PLUGIN_BLOG_USER_ID); if ($tokenInfo == false || !isset($tokenInfo['B2S_PLUGIN_USER_VERSION']) || !isset($tokenInfo['B2S_PLUGIN_VERSION']) || $tokenInfo['B2S_PLUGIN_USER_VERSION_NEXT_REQUEST'] < time() || (isset($tokenInfo['B2S_PLUGIN_VERSION']) && (int) $tokenInfo['B2S_PLUGIN_VERSION'] < (int) B2S_PLUGIN_VERSION) || (isset($tokenInfo['B2S_PLUGIN_TRAIL_END']) && strtotime($tokenInfo['B2S_PLUGIN_TRAIL_END']) < strtotime(gmdate('Y-m-d H:i:s')))) { B2S_Tools::setUserDetails(); $this->checkUpdate(); } else { define('B2S_PLUGIN_USER_VERSION', $tokenInfo['B2S_PLUGIN_USER_VERSION']); if (isset($tokenInfo['B2S_PLUGIN_TRAIL_END'])) { define('B2S_PLUGIN_TRAIL_END', $tokenInfo['B2S_PLUGIN_TRAIL_END']); } } } private function checkUpdate() { $args = array( 'timeout' => '15', 'redirection' => '5', 'user-agent' => "Blog2Social/" . B2S_PLUGIN_VERSION . " (Wordpress/Plugin)" ); $result = wp_remote_retrieve_body(wp_remote_get(B2S_PLUGIN_API_ENDPOINT . 'update.txt', $args)); $currentVersion = explode('#', $result); if (isset($currentVersion[0]) && (int) $currentVersion[0] > (int) B2S_PLUGIN_VERSION) { define('B2S_PLUGIN_NOTICE', 'UPDATE'); } } public function createMenu() { $subPages = array(); //pageTitle,menutitle,$capability, $menu_slug, $function, $icon_url, $position add_menu_page('Blog2Social', 'Blog2Social', 'blog2social_access', 'blog2social', null, plugins_url('/assets/images/b2s_icon.png', B2S_PLUGIN_FILE)); //$parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function $subPages[] = add_submenu_page('blog2social', esc_html__('Dashboard', 'blog2social'), esc_html__('Dashboard', 'blog2social'), 'blog2social_access', 'blog2social', array($this, 'b2sstart')); $subPages[] = add_submenu_page('blog2social', esc_html__('Share Website & Blog Content', 'blog2social'), esc_html__('Site & Blog Content', 'blog2social'), 'blog2social_access', 'blog2social-post', array($this, 'b2sPost')); $subPages[] = add_submenu_page('blog2social', esc_html__('Create Social Media Posts', 'blog2social'), esc_html__('Social Media Posts', 'blog2social'), 'blog2social_access', 'blog2social-curation', array($this, 'b2sContentCuration')); $subPages[] = add_submenu_page('blog2social', esc_html__('Calendar', 'blog2social'), esc_html__('Calendar', 'blog2social'), 'blog2social_access', 'blog2social-calendar', array($this, 'b2sPostCalendar')); $subPages[] = add_submenu_page('blog2social', esc_html__('Networks', 'blog2social'), esc_html__('Networks', 'blog2social'), 'blog2social_access', 'blog2social-network', array($this, 'b2sNetwork')); $subPages[] = add_submenu_page('blog2social', esc_html__('Settings', 'blog2social'), esc_html__('Settings', 'blog2social'), 'blog2social_access', 'blog2social-settings', array($this, 'b2sSettings')); if (!B2S_System::isblockedArea('B2S_MENU_ITEM_WP_PR_SERVICE', B2S_PLUGIN_ADMIN)) { $subPages[] = add_submenu_page('blog2social', esc_html__('PR-Service', 'blog2social'), esc_html__('PR-Service', 'blog2social'), 'blog2social_access', 'prg-post', array($this, 'prgPost')); } $subPages[] = add_submenu_page('blog2social', esc_html__('Help & Support', 'blog2social'), esc_html__('Help & Support', 'blog2social'), 'blog2social_access', 'blog2social-support', array($this, 'b2sSupport')); if (!B2S_System::isblockedArea('B2S_MENU_ITEM_WP_LICENSE', B2S_PLUGIN_ADMIN)) { $subPages[] = add_submenu_page('blog2social', esc_html__('Premium', 'blog2social'), '<span class="dashicons dashicons-star-filled"></span> ' . esc_html__('PREMIUM', 'blog2social'), 'blog2social_access', 'blog2social-premium', array($this, 'b2sPremium')); } $subPages[] = add_submenu_page(null, 'B2S Post Draft', 'B2S Post Draft', 'blog2social_access', 'blog2social-draft-post', array($this, 'b2sPostDraft')); $subPages[] = add_submenu_page(null, 'B2S Post Favorites', 'B2S Post Favorites', 'blog2social_access', 'blog2social-favorites', array($this, 'b2sPostFavorites')); $subPages[] = add_submenu_page(null, 'B2S Post Sched', 'B2S Post Sched', 'blog2social_access', 'blog2social-sched', array($this, 'b2sPostSched')); $subPages[] = add_submenu_page(null, 'B2S Post Approve', 'B2S Post Approve', 'blog2social_access', 'blog2social-approve', array($this, 'b2sPostApprove')); $subPages[] = add_submenu_page(null, 'B2S Post Publish', 'B2S Post Publish', 'blog2social_access', 'blog2social-publish', array($this, 'b2sPostPublish')); $subPages[] = add_submenu_page(null, 'B2S Post Notice', 'B2S Post Notice', 'blog2social_access', 'blog2social-notice', array($this, 'b2sPostNotice')); //Error post page since 4.8.0 $subPages[] = add_submenu_page(null, 'B2S Ship', 'B2S Ship', 'blog2social_access', 'blog2social-ship', array($this, 'b2sShip')); $subPages[] = add_submenu_page(null, 'B2S Curation Drafts', 'B2S Curation Drafts', 'blog2social_access', 'blog2social-curation-draft', array($this, 'b2sCurationDraft')); $subPages[] = add_submenu_page(null, 'PRG Login', 'PRG Login', 'blog2social_access', 'prg-login', array($this, 'prgLogin')); $subPages[] = add_submenu_page(null, 'PRG Ship', 'PRG Ship', 'blog2social_access', 'prg-ship', array($this, 'prgShip')); foreach ($subPages as $var) { add_action($var, array($this, 'addAssets')); } } public function createToolbarMenu() { if (!current_user_can('blog2social_access')) { return; } global $wp_admin_bar; $seo_url = strtolower(get_admin_url(null, 'admin.php?page=')); $title = '<div id="blog2social-ab-icon" class="ab-item" style="padding-left: 25px; background-repeat: no-repeat; background-size: 16px auto; background-position: left center; background-image: url(\'' . plugins_url('/assets/images/b2s_icon.png', B2S_PLUGIN_FILE) . '\');">' . esc_html__('Blog2Social', 'blog2social') . '</div>'; $wp_admin_bar->add_node(array( 'id' => 'blog2social', 'title' => $title, 'href' => $seo_url . 'blog2social' )); $wp_admin_bar->add_node(array( 'id' => 'blog2social-dashboard', 'title' => esc_html__('Dashboard', 'blog2social'), 'href' => $seo_url . 'blog2social', 'parent' => 'blog2social' )); $wp_admin_bar->add_node(array( 'id' => 'blog2social-post', 'title' => esc_html__('Site & Blog Content', 'blog2social'), 'href' => $seo_url . 'blog2social-post', 'parent' => 'blog2social' )); $wp_admin_bar->add_node(array( 'id' => 'blog2social-curation', 'title' => esc_html__('Social Media Posts', 'blog2social'), 'href' => $seo_url . 'blog2social-curation', 'parent' => 'blog2social' )); $wp_admin_bar->add_node(array( 'id' => 'blog2social-calendar', 'title' => esc_html__('Calendar', 'blog2social'), 'href' => $seo_url . 'blog2social-calendar', 'parent' => 'blog2social' )); $wp_admin_bar->add_node(array( 'id' => 'blog2social-network', 'title' => esc_html__('Networks', 'blog2social'), 'href' => $seo_url . 'blog2social-network', 'parent' => 'blog2social' )); $wp_admin_bar->add_node(array( 'id' => 'blog2social-settings', 'title' => esc_html__('Settings', 'blog2social'), 'href' => $seo_url . 'blog2social-settings', 'parent' => 'blog2social' )); if (!B2S_System::isblockedArea('B2S_MENU_ITEM_WP_PR_SERVICE', B2S_PLUGIN_ADMIN)) { $wp_admin_bar->add_node(array( 'id' => 'blog2social-prg-post', 'title' => esc_html__('PR-Service', 'blog2social'), 'href' => $seo_url . 'prg-post', 'parent' => 'blog2social' )); } $wp_admin_bar->add_node(array( 'id' => 'blog2social-support', 'title' => esc_html__('Help & Support', 'blog2social'), 'href' => $seo_url . 'blog2social-support', 'parent' => 'blog2social' )); if (!B2S_System::isblockedArea('B2S_MENU_ITEM_WP_LICENSE', B2S_PLUGIN_ADMIN)) { $wp_admin_bar->add_node(array( 'id' => 'blog2social-premium', 'title' => '<span class="ab-icon dashicons dashicons-star-filled"></span> ' . esc_html__('PREMIUM', 'blog2social'), 'href' => $seo_url . 'blog2social-premium', 'parent' => 'blog2social' )); } } //PageFunktion public function b2sstart() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SFULLCALLENDARCSS'); wp_enqueue_style('B2SCALENDARCSS'); wp_enqueue_script('B2SFULLCALENDARMOMENTJS'); wp_enqueue_script('B2SFULLCALENDARJS'); wp_enqueue_script('B2SFULLCALENDARLOCALEJS'); wp_enqueue_script('B2SLIB'); wp_enqueue_script('B2SMOMENT'); wp_enqueue_script('B2SCHARTJS'); wp_enqueue_style('B2SSTARTCSS'); wp_enqueue_script('B2SSTARTJS'); wp_enqueue_style('B2SPOSTCSS'); wp_enqueue_script('B2SPOSTJS'); wp_enqueue_style('B2SAIRDATEPICKERCSS'); wp_enqueue_script('B2SAIRDATEPICKERJS'); wp_enqueue_script('B2SAIRDATEPICKERDEJS'); wp_enqueue_script('B2SAIRDATEPICKERENJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/dashboard.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sPost() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SPOSTCSS'); wp_enqueue_script('B2SPOSTJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/post.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //Page Curation public function b2sContentCuration() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SCURATIONCSS'); wp_enqueue_script('B2SEMOJIBUTTONJS'); wp_enqueue_script('B2SCURATIONJS'); wp_enqueue_style('B2SAIRDATEPICKERCSS'); wp_enqueue_script('B2SAIRDATEPICKERJS'); wp_enqueue_script('B2SAIRDATEPICKERDEJS'); wp_enqueue_script('B2SAIRDATEPICKERENJS'); if (current_user_can('upload_files')) { //Capability by Super Admin ,Administrator ,Editor ,Author wp_enqueue_media(); } require_once( B2S_PLUGIN_DIR . 'views/b2s/curation.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sNetwork() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SNETWORKCSS'); wp_enqueue_script('B2SNETWORKJS'); wp_enqueue_style('B2STIMEPICKERCSS'); wp_enqueue_script('B2STIMEPICKERJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/network.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sSettings() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SSETTINGSCSS'); wp_enqueue_script('B2SSETTINGSJS'); wp_enqueue_style('B2STIMEPICKERCSS'); wp_enqueue_script('B2STIMEPICKERJS'); wp_enqueue_style('B2SBTNTOOGLECSS'); wp_enqueue_script('B2SBTNTOOGLEJS'); wp_enqueue_style('B2SCHOSENCSS'); wp_enqueue_script('B2SCHOSENJS'); if (current_user_can('upload_files')) { //Capability by Super Admin ,Administrator ,Editor ,Author wp_enqueue_media(); } require_once( B2S_PLUGIN_DIR . 'views/b2s/settings.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sShip() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SFULLCALLENDARCSS'); wp_enqueue_style('B2SCALENDARCSS'); wp_enqueue_script('B2SFULLCALENDARMOMENTJS'); wp_enqueue_script('B2SFULLCALENDARJS'); wp_enqueue_script('B2SFULLCALENDARLOCALEJS'); wp_enqueue_script('B2SLIB'); wp_enqueue_style('B2SSHIPCSS'); wp_enqueue_style('B2SDATEPICKERCSS'); wp_enqueue_style('B2STIMEPICKERCSS'); wp_enqueue_style('B2SWYSIWYGCSS'); wp_enqueue_script('B2SWYSIWYGJS'); wp_enqueue_script('B2SEMOJIBUTTONJS'); if (substr(B2S_LANGUAGE, 0, 2) == 'de') { wp_enqueue_script('B2SWYSIWYGLANGDEJS'); } else { wp_enqueue_script('B2SWYSIWYGLANGENJS'); } wp_enqueue_script('B2SDATEPICKERJS'); wp_enqueue_script('B2SDATEPICKERDEJS'); wp_enqueue_script('B2SDATEPICKERENJS'); wp_enqueue_script('B2STIMEPICKERJS'); wp_enqueue_script('B2SSHIPJS'); if (current_user_can('upload_files')) { //Capability by Super Admin ,Administrator ,Editor ,Author wp_enqueue_media(); } require_once( B2S_PLUGIN_DIR . 'views/b2s/ship.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sCurationDraft() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SCURATIONDRAFTCSS'); wp_enqueue_script('B2SCURATIONDRAFTJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/curation.draft.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function prgLogin() { wp_enqueue_script('B2SVALIDATEJS'); if (B2S_Tools::showNotice() == false) { $prgInfo = get_option('B2S_PLUGIN_PRG_' . B2S_PLUGIN_BLOG_USER_ID); if ($prgInfo != false && isset($prgInfo['B2S_PRG_ID']) && (int) $prgInfo['B2S_PRG_ID'] > 0 && isset($prgInfo['B2S_PRG_TOKEN']) && !empty($prgInfo['B2S_PRG_TOKEN'])) { $postId = (int) $_GET['postId']; echo'<script> window.location="' . admin_url('/admin.php?page=prg-ship&postId=' . $postId, 'http') . '"; </script> '; wp_die(); } else { wp_enqueue_style('PRGLOGINCSS'); wp_enqueue_script('PRGLOGINJS'); require_once( B2S_PLUGIN_DIR . 'views/prg/login.php'); } } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function prgShip() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('PRGSHIPCSS'); wp_enqueue_script('PRGSHIPJS'); wp_enqueue_script('PRGGENERALJS'); require_once( B2S_PLUGIN_DIR . 'views/prg/ship.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sPostSched() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_script('B2SLIB'); wp_enqueue_style('B2SPOSTSCHEDCSS'); wp_enqueue_style('B2SDATEPICKERCSS'); wp_enqueue_style('B2STIMEPICKERCSS'); wp_enqueue_script('B2SDATEPICKERJS'); wp_enqueue_script('B2SDATEPICKERDEJS'); wp_enqueue_script('B2SDATEPICKERENJS'); wp_enqueue_script('B2STIMEPICKERJS'); wp_enqueue_script('B2SPOSTJS'); wp_enqueue_style('B2SWYSIWYGCSS'); wp_enqueue_script('B2SWYSIWYGJS'); wp_enqueue_script('B2SEMOJIBUTTONJS'); wp_enqueue_script('B2SSHIPJS'); if (substr(B2S_LANGUAGE, 0, 2) == 'de') { wp_enqueue_script('B2SWYSIWYGLANGDEJS'); } else { wp_enqueue_script('B2SWYSIWYGLANGENJS'); } if (current_user_can('upload_files')) { //Capability by Super Admin ,Administrator ,Editor ,Author wp_enqueue_media(); } require_once( B2S_PLUGIN_DIR . 'views/b2s/post.sched.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sPostApprove() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SPOSTAPPROVECSS'); wp_enqueue_script('B2SPOSTJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/post.approve.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sPostDraft() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SPOSTDRAFTCSS'); wp_enqueue_script('B2SPOSTJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/post.draft.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sPostFavorites() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SPOSTCSS'); wp_enqueue_script('B2SPOSTJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/post.favorites.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sPostCalendar() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_script('B2SLIB'); wp_enqueue_style('B2SFULLCALLENDARCSS'); wp_enqueue_style('B2SCALENDARCSS'); wp_enqueue_style('B2SDATEPICKERCSS'); wp_enqueue_style('B2STIMEPICKERCSS'); wp_enqueue_script('B2SDATEPICKERJS'); wp_enqueue_script('B2SDATEPICKERDEJS'); wp_enqueue_script('B2SDATEPICKERENJS'); wp_enqueue_script('B2STIMEPICKERJS'); wp_enqueue_script('B2SCALENDARJS'); wp_enqueue_script('B2SFULLCALENDARMOMENTJS'); wp_enqueue_script('B2SFULLCALENDARJS'); wp_enqueue_script('B2SFULLCALENDARLOCALEJS'); wp_enqueue_style('B2SWYSIWYGCSS'); wp_enqueue_script('B2SWYSIWYGJS'); wp_enqueue_script('B2SEMOJIBUTTONJS'); wp_enqueue_script('B2SSHIPJS'); if (substr(B2S_LANGUAGE, 0, 2) == 'de') { wp_enqueue_script('B2SWYSIWYGLANGDEJS'); } else { wp_enqueue_script('B2SWYSIWYGLANGENJS'); } if (current_user_can('upload_files')) { //Capability by Super Admin ,Administrator ,Editor ,Author wp_enqueue_media(); } require_once( B2S_PLUGIN_DIR . 'views/b2s/post.calendar.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sSupport() { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SSUPPORT'); wp_enqueue_script('B2SSUPPORTJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/support.php'); } //PageFunktion public function b2sPremium() { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SPREMIUM'); wp_enqueue_style('B2SCHOSENCSS'); wp_enqueue_script('B2SCHOSENJS'); wp_enqueue_script('B2SPREMIUMJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/premium.php'); } //PageFunktion public function b2sPostPublish() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SPOSTPUBLISHCSS'); wp_enqueue_script('B2SPOSTJS'); wp_enqueue_script('PRGGENERALJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/post.publish.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function b2sPostNotice() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('B2SPOSTNOTICECSS'); wp_enqueue_script('B2SPOSTJS'); wp_enqueue_script('PRGGENERALJS'); require_once( B2S_PLUGIN_DIR . 'views/b2s/post.notice.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } //PageFunktion public function prgPost() { if (B2S_Tools::showNotice() == false) { wp_enqueue_script('B2SVALIDATEJS'); wp_enqueue_style('PRGPOSTCSS'); wp_enqueue_script('PRGPOSTJS'); wp_enqueue_script('PRGGENERALJS'); require_once( B2S_PLUGIN_DIR . 'views/prg/post.php'); } else { require_once( B2S_PLUGIN_DIR . 'views/notice.php'); } } public function addBootAssets($hook) { if ($hook == 'edit.php') { wp_enqueue_script('B2SPOSTSCHEDHEARTBEATJS'); } if ($hook == 'plugins.php') { wp_enqueue_script('B2SPLUGINDEACTIVATEJS'); wp_enqueue_style('B2SPLUGINDEACTIVATECSS'); } } public function addAssets() { wp_enqueue_style('B2SBOOTCSS'); wp_enqueue_script('B2SBOOTJS'); wp_enqueue_script('B2SGENERALJS'); } public function registerAssets() { wp_register_style('B2SBOOTCSS', plugins_url('assets/css/general.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SSTARTCSS', plugins_url('assets/css/b2s/start.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SPOSTCSS', plugins_url('assets/css/b2s/post.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SSHIPCSS', plugins_url('assets/css/b2s/ship.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SCURATIONCSS', plugins_url('assets/css/b2s/curation.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SPOSTSCHEDCSS', plugins_url('assets/css/b2s/post.sched.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SPOSTDRAFTCSS', plugins_url('assets/css/b2s/post.draft.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SPOSTAPPROVECSS', plugins_url('assets/css/b2s/post.approve.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SPOSTPUBLISHCSS', plugins_url('assets/css/b2s/post.publish.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SPOSTNOTICECSS', plugins_url('assets/css/b2s/post.notice.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SNETWORKCSS', plugins_url('assets/css/b2s/network.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SSUPPORT', plugins_url('assets/css/b2s/support.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SPREMIUM', plugins_url('assets/css/b2s/premium.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SSETTINGSCSS', plugins_url('assets/css/b2s/settings.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('PRGSHIPCSS', plugins_url('assets/css/prg/ship.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('PRGLOGINCSS', plugins_url('assets/css/prg/login.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SDATEPICKERCSS', plugins_url('assets/lib/datepicker/css/bootstrap-datepicker3.min.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SAIRDATEPICKERCSS', plugins_url('assets/lib/air-datepicker/css/datepicker.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2STIMEPICKERCSS', plugins_url('assets/lib/timepicker/timepicker.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('PRGPOSTCSS', plugins_url('assets/css/prg/post.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SWYSIWYGCSS', plugins_url('assets/lib/wysiwyg/square.min.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SPOSTBOXCSS', plugins_url('assets/css/b2s/wp/post-box.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SNOTICECSS', plugins_url('assets/css/notice.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SFULLCALLENDARCSS', plugins_url('assets/lib/fullcalendar/fullcalendar.min.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SCALENDARCSS', plugins_url('assets/css/b2s/calendar.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SBTNTOOGLECSS', plugins_url('assets/lib/btn-toogle/bootstrap-toggle.min.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SCHOSENCSS', plugins_url('assets/lib/chosen/chosen.min.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SPLUGINDEACTIVATECSS', plugins_url('assets/css/b2s/wp/plugin-deactivate.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_style('B2SCURATIONDRAFTCSS', plugins_url('assets/css/b2s/curation.css', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SNETWORKJS', plugins_url('assets/js/b2s/network.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SSETTINGSJS', plugins_url('assets/js/b2s/settings.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SSTARTJS', plugins_url('assets/js/b2s/start.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SPOSTJS', plugins_url('assets/js/b2s/post.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SSHIPJS', plugins_url('assets/js/b2s/ship.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SCURATIONJS', plugins_url('assets/js/b2s/curation.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('PRGSHIPJS', plugins_url('assets/js/prg/ship.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('PRGLOGINJS', plugins_url('assets/js/prg/login.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SBOOTJS', plugins_url('assets/js/general.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SVALIDATEJS', plugins_url('assets/js/validate.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SSUPPORTJS', plugins_url('assets/js/b2s/support.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SGENERALJS', plugins_url('assets/js/b2s/general.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SDATEPICKERJS', plugins_url('assets/lib/datepicker/js/bootstrap-datepicker.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SDATEPICKERDEJS', plugins_url('assets/lib/datepicker/locales/bootstrap-datepicker.de_DE.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SDATEPICKERENJS', plugins_url('assets/lib/datepicker/locales/bootstrap-datepicker.en_US.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SAIRDATEPICKERJS', plugins_url('assets/lib/air-datepicker/js/datepicker.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SAIRDATEPICKERDEJS', plugins_url('assets/lib/air-datepicker/js/locales/datepicker.de.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SAIRDATEPICKERENJS', plugins_url('assets/lib/air-datepicker/js/locales/datepicker.en.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SCHARTJS', plugins_url('assets/lib/chartjs/Chart.bundle.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SMOMENT', plugins_url('assets/lib/moment/moment-with-locales.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2STIMEPICKERJS', plugins_url('assets/lib/timepicker/timepicker.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('PRGPOSTJS', plugins_url('assets/js/prg/post.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('PRGGENERALJS', plugins_url('assets/js/prg/general.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SWYSIWYGJS', plugins_url('assets/lib/wysiwyg/jquery.sceditor.xhtml.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SWYSIWYGLANGDEJS', plugins_url('assets/lib/wysiwyg/languages/de.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SWYSIWYGLANGENJS', plugins_url('assets/lib/wysiwyg/languages/en.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SPOSTBOXJS', plugins_url('assets/js/b2s/wp/post-box.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SPOSTSCHEDHEARTBEATJS', plugins_url('assets/js/b2s/wp/post-sched-heartbeat.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SCALENDARJS', plugins_url('assets/js/b2s/calendar.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SFULLCALENDARMOMENTJS', plugins_url('assets/lib/fullcalendar/lib/moment.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SFULLCALENDARJS', plugins_url('assets/lib/fullcalendar/fullcalendar.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SFULLCALENDARLOCALEJS', plugins_url('assets/lib/fullcalendar/locale-all.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SBTNTOOGLEJS', plugins_url('assets/lib/btn-toogle/bootstrap-toggle.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SCHOSENJS', plugins_url('assets/lib/chosen/chosen.jquery.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SLIB', plugins_url('assets/js/b2s/lib.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SPLUGINDEACTIVATEJS', plugins_url('assets/js/b2s/wp/plugin-deactivate.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SCURATIONDRAFTJS', plugins_url('assets/js/b2s/curation.draft.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SPREMIUMJS', plugins_url('assets/js/b2s/premium.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); wp_register_script('B2SEMOJIBUTTONJS', plugins_url('assets/lib/emoji-button/emoji-button.min.js', B2S_PLUGIN_FILE), array(), B2S_PLUGIN_VERSION); } public function initCaps() { global $wp_roles; if (!class_exists('WP_Roles')) { wp_die(esc_html__('Blog2Social needs Wordpress Version 4.7.0 or higher.', 'blog2social') . ' ' . sprintf(__('<a href="%s" target="_blank">Please find more Information and help in our FAQ</a>', 'blog2social'), esc_url(B2S_Tools::getSupportLink('system'))) . ' ' . esc_html__('or', 'blog2social') . ' <a href="' . esc_url(admin_url("/plugins.php", "http")) . '/">' . esc_html__('back to install plugins', 'blog2social') . '</a>'); } if (!isset($wp_roles)) { $wp_roles = new WP_Roles(); // @codingStandardsIgnoreLine } if (!function_exists('get_editable_roles')) { require_once ABSPATH . 'wp-admin/includes/user.php'; } foreach (get_editable_roles() as $role_name => $role_info) { $wp_roles->add_cap($role_name, 'blog2social_access'); } } public function activatePlugin() { require_once(B2S_PLUGIN_DIR . 'includes/Tools.php'); require_once (B2S_PLUGIN_DIR . 'includes/System.php'); require_once(B2S_PLUGIN_DIR . 'includes/Options.php'); $b2sSystem = new B2S_System(); $b2sCheckBefore = $b2sSystem->check('before'); if (is_array($b2sCheckBefore)) { $b2sSystem->deactivatePlugin(); wp_die($b2sSystem->getErrorMessage($b2sCheckBefore) . ' ' . esc_html__('or', 'blog2social') . ' <a href="' . esc_url(admin_url("/plugins.php", "http")) . '/">' . esc_html__('back to install plugins', 'blog2social') . '</a>'); } global $wpdb; //Start Old Plugin $sqlDeleteFirst = 'DROP TABLE IF EXISTS `prg_connect_sent`'; $wpdb->query($sqlDeleteFirst); $sqlDeleteSecond = 'DROP TABLE IF EXISTS `prg_connect_config`'; $wpdb->query($sqlDeleteSecond); //END Old Plugin /* * Change Table Names with Prefix */ if ($wpdb->base_prefix != 'b2s_' && $wpdb->prefix != 'b2s_') { $oldTables = $wpdb->get_results('SHOW TABLES LIKE "b2s_%%"'); foreach ($oldTables as $v => $table) { $tableVars = array_values(get_object_vars($table)); if (isset($tableVars[0]) && !empty($tableVars[0])) { $wpdb->query("ALTER TABLE `{$tableVars[0]}` RENAME `{$wpdb->base_prefix}{$tableVars[0]}`;"); } } } $sqlCreateUser = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}b2s_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `token` varchar(255) NOT NULL, `blog_user_id` int(11) NOT NULL, `feature` TINYINT(2) NOT NULL, `state_url` TINYINT(2) NOT NULL, `register_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), INDEX `blog_user_id` (`blog_user_id`), INDEX `token` (`token`), INDEX `feature` (`feature`) ) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1;"; $wpdb->query($sqlCreateUser); $b2sUserCols = $wpdb->get_results('SHOW COLUMNS FROM ' . $wpdb->prefix . 'b2s_user'); if (is_array($b2sUserCols) && isset($b2sUserCols[0])) { $b2sUserColsData = array(); foreach ($b2sUserCols as $key => $value) { if (isset($value->Field) && !empty($value->Field)) { $b2sUserColsData[] = $value->Field; } } if (!in_array("register_date", $b2sUserColsData)) { $wpdb->query("ALTER TABLE {$wpdb->prefix}b2s_user ADD register_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'"); } if (!in_array("state_url", $b2sUserColsData)) { $wpdb->query("ALTER TABLE {$wpdb->prefix}b2s_user ADD state_url TINYINT(2) NOT NULL DEFAULT '1'"); } } //Notice Rating - stop rating remember again //$wpdb->query('UPDATE `b2s_user` SET `feature` = 0'); $keys = $wpdb->get_results('SHOW INDEX FROM `' . $wpdb->prefix . 'b2s_user`'); $allowIndexUser = array('PRIMARY', 'blog_user_id', 'token', 'feature'); foreach ($keys as $k => $value) { if (!in_array($value->Key_name, $allowIndexUser)) { $wpdb->query('ALTER TABLE `' . $wpdb->prefix . 'b2s_user` DROP INDEX ' . $value->Key_name); } } $sqlCreateUserPosts = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}b2s_posts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `post_id` int(11) NOT NULL, `blog_user_id` int(11) NOT NULL, `last_edit_blog_user_id` int(11) NOT NULL, `user_timezone` TINYINT NOT NULL DEFAULT '0', `sched_details_id` INT NOT NULL, `sched_type` TINYINT NOT NULL DEFAULT '0', `sched_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `sched_date_utc` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `publish_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `publish_link` varchar(255) NOT NULL, `publish_error_code` varchar(100) NOT NULL, `network_details_id` int(11) NOT NULL, `post_for_relay` TINYINT NOT NULL DEFAULT '0', `post_for_approve` TINYINT NOT NULL DEFAULT '0', `relay_primary_post_id` int(11) NOT NULL DEFAULT '0', `relay_delay_min` int(11) NOT NULL DEFAULT '0', `hook_action` TINYINT NOT NULL DEFAULT '0', `hide` TINYINT NOT NULL DEFAULT '0', `v2_id` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), INDEX `post_id` (`post_id`), INDEX `blog_user_id` (`blog_user_id`) , INDEX `sched_details_id` (`sched_details_id`), INDEX `sched_date` (`sched_date`), INDEX `sched_date_utc` (`sched_date_utc`), INDEX `publish_date` (`publish_date`) , INDEX `relay_primary_post_id` (`relay_primary_post_id`) , INDEX `hook_action` (`hook_action`), INDEX `hide` (`hide`) ) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1 ;"; $wpdb->query($sqlCreateUserPosts); //since V4.8.0 $b2sPostsCols = $wpdb->get_results('SHOW COLUMNS FROM ' . $wpdb->prefix . 'b2s_posts'); if (is_array($b2sPostsCols) && isset($b2sPostsCols[0])) { $b2sPostsColsData = array(); foreach ($b2sPostsCols as $key => $value) { if (isset($value->Field) && !empty($value->Field)) { $b2sPostsColsData[] = $value->Field; } } if (!in_array("last_edit_blog_user_id", $b2sPostsColsData)) { $wpdb->query("ALTER TABLE {$wpdb->prefix}b2s_posts ADD last_edit_blog_user_id INT NOT NULL DEFAULT '0'"); } if (!in_array("post_for_relay", $b2sPostsColsData)) { $wpdb->query("ALTER TABLE {$wpdb->prefix}b2s_posts ADD post_for_relay TINYINT NOT NULL DEFAULT '0'"); } if (!in_array("post_for_approve", $b2sPostsColsData)) { $wpdb->query("ALTER TABLE {$wpdb->prefix}b2s_posts ADD post_for_approve TINYINT NOT NULL DEFAULT '0'"); } if (!in_array("relay_primary_post_id", $b2sPostsColsData)) { $wpdb->query("ALTER TABLE {$wpdb->prefix}b2s_posts ADD relay_primary_post_id int(11) NOT NULL DEFAULT '0'"); $wpdb->query('ALTER TABLE `' . $wpdb->prefix . 'b2s_posts` ADD INDEX(`relay_primary_post_id`)'); } if (!in_array("relay_delay_min", $b2sPostsColsData)) { $wpdb->query("ALTER TABLE {$wpdb->prefix}b2s_posts ADD relay_delay_min int(11) NOT NULL DEFAULT '0'"); } } $keys = $wpdb->get_results('SHOW INDEX FROM `' . $wpdb->prefix . 'b2s_posts`'); $allowIndexPosts = array('PRIMARY', 'post_id', 'blog_user_id', 'sched_details_id', 'sched_date', 'sched_date_utc', 'publish_date', 'relay_primary_post_id', 'hook_action', 'hide'); foreach ($keys as $k => $value) { if (!in_array($value->Key_name, $allowIndexPosts)) { $wpdb->query('ALTER TABLE `' . $wpdb->prefix . 'b2s_posts` DROP INDEX ' . $value->Key_name); } } //Change Collation >=V4.0 Emoji $existsTable = $wpdb->get_results('SHOW TABLES LIKE "' . $wpdb->prefix . 'b2s_posts_sched_details"'); if (is_array($existsTable) && !empty($existsTable)) { $wpdb->query('ALTER TABLE `' . $wpdb->prefix . 'b2s_posts_sched_details` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'); $wpdb->query('ALTER TABLE `' . $wpdb->prefix . 'b2s_posts_sched_details` CHANGE sched_data sched_data TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'); $wpdb->query('REPAIR TABLE `' . $wpdb->prefix . 'b2s_posts_sched_details`'); $wpdb->query('OPTIMIZE TABLE `' . $wpdb->prefix . 'b2s_posts_sched_details`'); } else { $sqlCreateUserSchedDetails = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}b2s_posts_sched_details` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sched_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `image_url` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci AUTO_INCREMENT=1 ;"; $wpdb->query($sqlCreateUserSchedDetails); } $sqlCreateUserNetworkDetails = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}b2s_posts_network_details` ( `id` int(11) NOT NULL AUTO_INCREMENT, `network_id` TINYINT NOT NULL, `network_type` TINYINT NOT NULL, `network_auth_id` int(11) NOT NULL, `network_display_name` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1 ;"; $wpdb->query($sqlCreateUserNetworkDetails); $sqlCreateUserContact = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}b2s_user_contact`( `id` int(5) NOT NULL AUTO_INCREMENT , `blog_user_id` int(11) NOT NULL , `name_mandant` varchar(100) NOT NULL , `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `name_presse` varchar(100) NOT NULL , `anrede_presse` enum('0','1','2') NOT NULL DEFAULT '0' COMMENT '0=Frau,1=Herr 2=keine Angabe', `vorname_presse` varchar(50) NOT NULL , `nachname_presse` varchar(50) NOT NULL , `strasse_presse` varchar(100) NOT NULL , `nummer_presse` varchar(5) NOT NULL DEFAULT '', `plz_presse` varchar(10) NOT NULL , `ort_presse` varchar(75) NOT NULL , `land_presse` varchar(3) NOT NULL DEFAULT 'DE', `email_presse` varchar(75) NOT NULL , `telefon_presse` varchar(30) NOT NULL , `fax_presse` varchar(30) NOT NULL , `url_presse` varchar(150) NOT NULL , PRIMARY KEY (`id`) , KEY `blog_user_id`(`blog_user_id`)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1"; $wpdb->query($sqlCreateUserContact); $sqlCreateNetworkSettings = 'CREATE TABLE IF NOT EXISTS `' . $wpdb->prefix . 'b2s_user_network_settings` ( `id` int(11) NOT NULL AUTO_INCREMENT, `blog_user_id` int(11) NOT NULL, `mandant_id` int(11) NOT NULL, `network_auth_id` int(11) NOT NULL, PRIMARY KEY (`id`), INDEX `blog_user_id` (`blog_user_id`), INDEX `mandant_id` (`mandant_id`) ) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1;'; $wpdb->query($sqlCreateNetworkSettings); $sqlCreateDrafts = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}b2s_posts_drafts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `last_save_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `blog_user_id` int(11) NOT NULL, `post_id` int(11) NOT NULL, `data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`id`), INDEX `blog_user_id` (`blog_user_id`), INDEX `post_id` (`post_id`) ) DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci AUTO_INCREMENT=1;"; $wpdb->query($sqlCreateDrafts); $sqlCreateFavorites = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}b2s_posts_favorites` ( `id` int(11) NOT NULL AUTO_INCREMENT, `blog_user_id` int(11) NOT NULL, `post_id` int(11) NOT NULL, `save_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), INDEX `blog_user_id` (`blog_user_id`), INDEX `post_id` (`post_id`) ) DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci AUTO_INCREMENT=1;"; $wpdb->query($sqlCreateFavorites); /* * SET SAFETY AUTO-INCREMENT */ $wpdb->query("ALTER TABLE `{$wpdb->prefix}b2s_posts` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;"); $wpdb->query("ALTER TABLE `{$wpdb->prefix}b2s_posts_sched_details` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;"); $wpdb->query("ALTER TABLE `{$wpdb->prefix}b2s_posts_network_details` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;"); $wpdb->query("ALTER TABLE `{$wpdb->prefix}b2s_user` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;"); $wpdb->query("ALTER TABLE `{$wpdb->prefix}b2s_user_contact` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;"); $wpdb->query("ALTER TABLE `{$wpdb->prefix}b2s_user_network_settings` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;"); $wpdb->query("ALTER TABLE `{$wpdb->prefix}b2s_posts_drafts` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;"); $wpdb->query("ALTER TABLE `{$wpdb->prefix}b2s_posts_favorites` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT;"); $b2sCheckAfter = $b2sSystem->check('after'); if (is_array($b2sCheckAfter)) { $b2sSystem->deactivatePlugin(); wp_die($b2sSystem->getErrorMessage($b2sCheckAfter) . ' ' . esc_html__('or', 'blog2social') . ' <a href="' . esc_url(admin_url("/plugins.php", "http")) . '/">' . esc_html__('back to install plugins', 'blog2social') . '</a>'); } //Activate Social Meta Tags $options = new B2S_Options(0, 'B2S_PLUGIN_GENERAL_OPTIONS'); if ($options->_getOption('og_active') === false || $options->_getOption('card_active') === false) { $options->_setOption('og_active', 1); $options->_setOption('card_active', 1); } //init roles & capabilities $this->initCaps(); } public function deactivatePlugin($allBlogs) { global $wpdb; $optionDeleteSchedPosts = get_option('B2S_PLUGIN_DEACTIVATE_SCHED_POST'); if ($allBlogs && is_multisite()) { $sql = "SELECT blog_id FROM {$wpdb->base_prefix}blogs"; $blogIds = $wpdb->get_results($sql, ARRAY_A); if (is_array($blogIds) && !empty($blogIds)) { foreach ($blogIds as $blogId) { switch_to_blog($blogId['blog_id']); if ($optionDeleteSchedPosts !== false && (int) $optionDeleteSchedPosts == 1) { update_option("B2S_PLUGIN_DEACTIVATE_SCHED_POST", 1, false); } else { delete_option("B2S_PLUGIN_DEACTIVATE_SCHED_POST"); } deactivate_plugins(B2S_PLUGIN_HOOK, false, false); restore_current_blog(); } return true; } } if ($optionDeleteSchedPosts !== false && (int) $optionDeleteSchedPosts == 1) { $existsTable = $wpdb->get_results('SHOW TABLES LIKE "' . $wpdb->prefix . 'b2s_user"'); if (is_array($existsTable) && !empty($existsTable)) { $sqlPosts = "SELECT a.token FROM `{$wpdb->prefix}b2s_user` a INNER JOIN {$wpdb->prefix}b2s_posts ON a.`blog_user_id` = {$wpdb->prefix}b2s_posts.`blog_user_id` where {$wpdb->prefix}b2s_posts.`hide` = 0 AND {$wpdb->prefix}b2s_posts.`sched_type` != 3 AND {$wpdb->prefix}b2s_posts.`publish_date`= '0000-00-00 00:00:00' GROUP by a.blog_user_id"; $results = $wpdb->get_results($sqlPosts, ARRAY_A); if (is_array($results) && !empty($results)) { $tempData = array('action' => 'deleteBlogSchedPost', 'host' => get_site_url(), 'data' => serialize($results)); $result = json_decode(B2S_Api_Post::post(B2S_PLUGIN_API_ENDPOINT, $tempData)); if (isset($result->result) && $result->result == true) { $data = array('hide' => '1', 'hook_action' => '0'); $where = array('publish_date' => '0000-00-00 00:00:00', 'hide' => '0'); $wpdb->update($wpdb->prefix . 'b2s_posts', $data, $where, array('%d', '%d'), array('%d', '%d')); delete_option('B2S_PLUGIN_DEACTIVATE_SCHED_POST'); } } } } } public function releaseLocks() { require_once(B2S_PLUGIN_DIR . 'includes/Options.php'); $options = new B2S_Options(get_current_user_id()); $lock = $options->_getOption("B2S_PLUGIN_USER_CALENDAR_BLOCKED"); if ($lock) { delete_option("B2S_PLUGIN_CALENDAR_BLOCKED_" . $lock); $options->_setOption("B2S_PLUGIN_USER_CALENDAR_BLOCKED", false); } } }