update
This commit is contained in:
@@ -0,0 +1,707 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* YouTube Feed Saver Manager
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
|
||||
namespace SmashBalloon\YouTubeFeed\Builder;
|
||||
|
||||
use SmashBalloon\YouTubeFeed\SBY_Cache;
|
||||
use SmashBalloon\YouTubeFeed\Services\ShortcodeService;
|
||||
use SmashBalloon\YouTubeFeed\Customizer\DB;
|
||||
use Smashballoon\Customizer\Feed_Builder;
|
||||
use SmashBalloon\YouTubeFeed\SBY_Parse;
|
||||
use SmashBalloon\YouTubeFeed\Helpers\Util;
|
||||
|
||||
class SBY_Feed_Saver_Manager
|
||||
{
|
||||
/**
|
||||
* AJAX hooks for various feed data related functionality
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function register()
|
||||
{
|
||||
add_action('wp_ajax_sby_feed_saver_manager_builder_update', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'builder_update' ));
|
||||
add_action('wp_ajax_sby_feed_saver_manager_get_feed_list_page', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'get_feed_list_page' ));
|
||||
add_action('wp_ajax_sby_feed_saver_manager_fly_preview', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'feed_customizer_fly_preview' ));
|
||||
add_action('wp_ajax_sby_feed_handle_saver_manager_fly_preview', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'feed_customizer_feed_handle_fly_preview' ));
|
||||
add_action('wp_ajax_sby_feed_saver_manager_clear_single_feed_cache', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'clear_single_feed_cache' ));
|
||||
add_action('wp_ajax_sby_feed_saver_manager_duplicate_feed', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'duplicate_feed' ));
|
||||
add_action('wp_ajax_sby_feed_saver_manager_delete_feeds', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'delete_feed' ));
|
||||
add_action('wp_ajax_sby_dismiss_onboarding', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'after_dismiss_onboarding' ));
|
||||
add_action('wp_ajax_sby_feed_refresh', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'feed_refresh' ));
|
||||
add_action('wp_ajax_sby_feed_saver_clear_comments_cache', array( 'SmashBalloon\YouTubeFeed\Builder\SBY_Feed_Saver_Manager', 'clear_comments_cache' ));
|
||||
}
|
||||
|
||||
/**
|
||||
* Used in an AJAX call to update settings for a particular feed.
|
||||
* Can also be used to create a new feed if no feed_id sent in
|
||||
* $_POST data.
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function builder_update()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! sby_current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
$settings_data = $_POST;
|
||||
|
||||
$feed_id = false;
|
||||
$is_new_feed = isset($settings_data['new_insert']) ? true : false;
|
||||
if (! empty($settings_data['feed_id'])) {
|
||||
$feed_id = sanitize_text_field($settings_data['feed_id']);
|
||||
unset($settings_data['feed_id']);
|
||||
} elseif (isset($settings_data['feed_id'])) {
|
||||
unset($settings_data['feed_id']);
|
||||
}
|
||||
unset($settings_data['action']);
|
||||
unset($settings_data['nonce']);
|
||||
|
||||
if (! isset($settings_data['feed_name'])) {
|
||||
$settings_data['feed_name'] = '';
|
||||
}
|
||||
|
||||
// If all video elements are disabled then store it as an empty array
|
||||
if (empty($settings_data['settings']['include'])) {
|
||||
$settings_data['settings']['include'] = array();
|
||||
}
|
||||
if (empty($settings_data['settings']['hoverinclude'])) {
|
||||
$settings_data['settings']['hoverinclude'] = array();
|
||||
}
|
||||
$update_feed = isset($settings_data['update_feed']) ? true : false;
|
||||
unset($settings_data['update_feed']);
|
||||
|
||||
if ($is_new_feed) {
|
||||
$settings_data = SBY_Feed_Templates_Settings::get_feed_settings_by_feed_templates($settings_data);
|
||||
}
|
||||
|
||||
$selected_feed_model = isset($settings_data['selectedFeedModel']) ? self::filter_feed_model_data($settings_data['selectedFeedModel'], $settings_data['feedtype']) : '';
|
||||
|
||||
// Check if New
|
||||
if (isset($settings_data['new_insert']) && $settings_data['new_insert'] === 'true' && isset($settings_data['feedtype'])) {
|
||||
$feedtype = sanitize_text_field($settings_data['feedtype']);
|
||||
$feed_type_data = self::create_single_feed_type_data($feedtype, $selected_feed_model);
|
||||
$settings_data = array_merge($feed_type_data, $settings_data);
|
||||
|
||||
$settings_data['feed_name'] = self::create_feed_name($settings_data['feedtype'], $selected_feed_model);
|
||||
}
|
||||
|
||||
unset($settings_data['feedtype']);
|
||||
unset($settings_data['selectedFeedModel']);
|
||||
unset($settings_data['new_insert']);
|
||||
unset($settings_data['sourcename']);
|
||||
$feed_name = '';
|
||||
if ($update_feed) {
|
||||
$feed_name = $settings_data['feed_name'];
|
||||
$settings_data = $settings_data['settings'];
|
||||
}
|
||||
|
||||
unset($settings_data['sources']);
|
||||
|
||||
$feed_saver = new SBY_Feed_Saver($feed_id);
|
||||
$feed_saver->set_feed_name($feed_name);
|
||||
$feed_saver->set_data($settings_data);
|
||||
|
||||
$return = array(
|
||||
'success' => false,
|
||||
'feed_id' => false,
|
||||
);
|
||||
|
||||
if ($feed_saver->update_or_insert()) {
|
||||
$return = array(
|
||||
'success' => true,
|
||||
'feed_id' => $feed_saver->get_feed_id(),
|
||||
);
|
||||
if ($is_new_feed) {
|
||||
echo wp_json_encode($return);
|
||||
wp_die();
|
||||
} else {
|
||||
$feed_cache = new SBY_Cache($feed_id);
|
||||
$feed_cache->clear('all');
|
||||
$feed_cache->clear('posts');
|
||||
echo wp_json_encode($return);
|
||||
wp_die();
|
||||
}
|
||||
}
|
||||
echo wp_json_encode($return);
|
||||
|
||||
wp_die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of feeds with a limit and offset like a page
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function get_feed_list_page()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! sby_current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
$args = array( 'page' => (int)$_POST['page'] );
|
||||
$feeds_data = sby_builder_pro()->get_feed_list($args);
|
||||
|
||||
echo wp_json_encode($feeds_data);
|
||||
|
||||
wp_die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used in an AJAX call to delete a feed cache from the Database
|
||||
* $_POST data.
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function clear_single_feed_cache()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! sby_current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
$feed_id = sanitize_key($_POST['feedID']);
|
||||
// clear object cache
|
||||
sby_clear_object_cache();
|
||||
// clear transients
|
||||
sby_clear_cache();
|
||||
self::feed_customizer_fly_preview();
|
||||
wp_die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used To check if it's customizer Screens
|
||||
* Returns Feed info or false!
|
||||
*
|
||||
* @param bool $include_comments
|
||||
*
|
||||
* @return array|bool
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function maybe_feed_customizer_data($include_comments = false)
|
||||
{
|
||||
if (isset($_GET['feed_id'])) {
|
||||
$feed_id = sanitize_key($_GET['feed_id']);
|
||||
$feed_saver = new SBY_Feed_Saver($feed_id);
|
||||
$settings = $feed_saver->get_feed_settings();
|
||||
$feed_db_data = $feed_saver->get_feed_db_data();
|
||||
|
||||
if ($settings !== false) {
|
||||
$return = array(
|
||||
'feed_info' => $feed_db_data,
|
||||
'headerData' => $feed_db_data,
|
||||
'settings' => $settings,
|
||||
'posts' => array(),
|
||||
);
|
||||
if (intval($feed_id) > 0) {
|
||||
$instagram_feed_settings = new \SB_Instagram_Settings_Pro(
|
||||
array(
|
||||
'feed' => $feed_id,
|
||||
'customizer' => true,
|
||||
),
|
||||
sbi_defaults()
|
||||
);
|
||||
} else {
|
||||
$instagram_feed_settings = new \SB_Instagram_Settings_Pro($settings, sbi_defaults());
|
||||
}
|
||||
|
||||
$instagram_feed_settings->set_feed_type_and_terms();
|
||||
$instagram_feed_settings->set_transient_name();
|
||||
$transient_name = $instagram_feed_settings->get_transient_name();
|
||||
$settings = $instagram_feed_settings->get_settings();
|
||||
|
||||
$feed_type_and_terms = $instagram_feed_settings->get_feed_type_and_terms();
|
||||
if ($feed_id === 'legacy' && $transient_name === 'sbi_false') {
|
||||
$transient_name = 'sbi_legacy';
|
||||
}
|
||||
$instagram_feed = new \SB_Instagram_Feed_Pro($transient_name);
|
||||
|
||||
$instagram_feed->set_cache($instagram_feed_settings->get_cache_time_in_seconds(), $settings);
|
||||
|
||||
if ($instagram_feed->regular_cache_exists()) {
|
||||
$instagram_feed->set_post_data_from_cache();
|
||||
|
||||
if ($instagram_feed->need_posts($settings['num']) && $instagram_feed->can_get_more_posts()) {
|
||||
while ($instagram_feed->need_posts($settings['num']) && $instagram_feed->can_get_more_posts()) {
|
||||
$instagram_feed->add_remote_posts($settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed());
|
||||
}
|
||||
|
||||
$instagram_feed->cache_feed_data($instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled']);
|
||||
}
|
||||
} else {
|
||||
while ($instagram_feed->need_posts($settings['num']) && $instagram_feed->can_get_more_posts()) {
|
||||
$instagram_feed->add_remote_posts($settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed());
|
||||
}
|
||||
|
||||
if ($instagram_feed->out_of_next_pages() || $instagram_feed->should_look_for_db_only_posts($settings, $feed_type_and_terms)) {
|
||||
$instagram_feed->add_db_only_posts($transient_name, $settings, $feed_type_and_terms);
|
||||
}
|
||||
|
||||
if (! $instagram_feed->should_use_backup()) {
|
||||
$instagram_feed->cache_feed_data($instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled']);
|
||||
} elseif ($instagram_feed->should_cache_error()) {
|
||||
$cache_time = min($instagram_feed_settings->get_cache_time_in_seconds(), 15 * 60);
|
||||
$instagram_feed->cache_feed_data($cache_time, false);
|
||||
}
|
||||
}
|
||||
$return['posts'] = $instagram_feed->get_post_data();
|
||||
|
||||
$header_data = array();
|
||||
|
||||
$instagram_feed->set_remote_header_data($settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed());
|
||||
$header_data = $instagram_feed->get_header_data();
|
||||
if ($settings['stories'] && ! empty($header_data)) {
|
||||
$instagram_feed->set_remote_stories_data($settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed());
|
||||
}
|
||||
$instagram_feed->cache_header_data($instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled']);
|
||||
if (! empty($header_data) && \SB_Instagram_Connected_Account::local_avatar_exists($header_data['username'])) {
|
||||
$header_data['local_avatar_url'] = \SB_Instagram_Connected_Account::get_local_avatar_url($header_data['username']);
|
||||
$header_data['local_avatar'] = \SB_Instagram_Connected_Account::get_local_avatar_url($header_data['username']);
|
||||
} else {
|
||||
$header_data['local_avatar'] = false;
|
||||
}
|
||||
$header_data['local_avatar'] = false;
|
||||
$return['header'] = $header_data;
|
||||
$return['headerData'] = $header_data;
|
||||
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get single feed type create data
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function create_single_feed_type_data($feedtype, $model)
|
||||
{
|
||||
$feed_data = array();
|
||||
$feed_data['usecustomsearch'] = '';
|
||||
$feed_data['showpast'] = '';
|
||||
$feed_data['customsearch'] = '';
|
||||
$feed_data['api_key'] = '';
|
||||
$feed_data['type'] = $feedtype;
|
||||
$feed_data['channel'] = $model['channel'];
|
||||
$feed_data['playlist'] = $model['playlist'];
|
||||
$feed_data['favorites'] = $model['favorites'];
|
||||
$feed_data['search'] = $model['search'];
|
||||
$feed_data['live'] = $model['live'];
|
||||
$feed_data['single'] = $model['single'];
|
||||
|
||||
$feed_data['caching_type'] = 'page';
|
||||
$feed_data['caching_time'] = 1;
|
||||
$feed_data['caching_time_unit'] = 'hours';
|
||||
$feed_data['cache_cron_interval'] = '30mins';
|
||||
$feed_data['cache_cron_time'] = 0;
|
||||
$feed_data['cache_cron_am_pm'] = 'am';
|
||||
|
||||
return $feed_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to retrieve Feed Posts for preview screen
|
||||
* Returns Feed info or false!
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function feed_customizer_fly_preview()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! sby_current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
if (isset($_POST['feedID']) && isset($_POST['previewSettings'])) {
|
||||
$feed_id = $_POST['feedID'];
|
||||
$preview_settings = SBY_Parse::parse_quoted_string_as_boolean($_POST['previewSettings']);
|
||||
$feed_name = $_POST['feedName'];
|
||||
|
||||
$preview_settings = isset($_POST['isFeedTemplatesPopup']) ? SBY_Feed_Templates_Settings::get_feed_settings_by_feed_templates($preview_settings) + $preview_settings : $preview_settings;
|
||||
|
||||
$feed_saver = new SBY_Feed_Saver($feed_id);
|
||||
$feed_saver->set_feed_name($feed_name);
|
||||
$feed_saver->set_data($preview_settings);
|
||||
|
||||
if (isset($_POST['clearCache']) && $_POST['clearCache'] == true) {
|
||||
sby_clear_cache();
|
||||
}
|
||||
|
||||
$atts = Feed_Builder::add_customizer_att(
|
||||
array(
|
||||
'feed' => $feed_id,
|
||||
'customizer' => true,
|
||||
)
|
||||
);
|
||||
|
||||
//Fixes Carousel preview issue.
|
||||
$only_preview = self::carousel_column_preview($_POST['previewScreen'],$preview_settings);
|
||||
|
||||
$shortcode = new ShortcodeService();
|
||||
$feed_output = $shortcode->sby_youtube_feed($atts, $only_preview);
|
||||
$return['feed_html'] = $feed_output['feedInitOutput'];
|
||||
;
|
||||
$return['customizerDataSettings'] = $preview_settings;
|
||||
|
||||
echo json_encode($return);
|
||||
}
|
||||
wp_die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to feed handle for preview screen
|
||||
* Returns Feed info or false!
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function feed_customizer_feed_handle_fly_preview()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! sby_current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
if (isset($_POST['feedID']) && isset($_POST['previewSettings'])) {
|
||||
$feed_id = $_POST['feedID'];
|
||||
$preview_settings = SBY_Parse::parse_quoted_string_as_boolean($_POST['previewSettings']);
|
||||
$feed_name = $_POST['feedName'];
|
||||
$feed_type = $_POST['feedType'];
|
||||
|
||||
$preview_settings = isset($_POST['isFeedTemplatesPopup']) ? SBY_Feed_Templates_Settings::get_feed_settings_by_feed_templates($preview_settings) + $preview_settings : $preview_settings;
|
||||
$preview_settings = self::filter_feed_model_data($preview_settings, $feed_type);
|
||||
|
||||
$feed_saver = new SBY_Feed_Saver($feed_id);
|
||||
$feed_saver->set_feed_name($feed_name);
|
||||
$feed_saver->set_data($preview_settings);
|
||||
|
||||
if (isset($_POST['clearCache']) && $_POST['clearCache'] == true) {
|
||||
sby_clear_cache();
|
||||
}
|
||||
|
||||
$atts = Feed_Builder::add_customizer_att(
|
||||
array(
|
||||
'feed' => $feed_id,
|
||||
'customizer' => true,
|
||||
)
|
||||
);
|
||||
|
||||
$shortcode = new ShortcodeService();
|
||||
$feed_output = $shortcode->sby_youtube_feed($atts, $preview_settings);
|
||||
$return['feed_html'] = $feed_output['feedInitOutput'];
|
||||
;
|
||||
$return['customizerDataSettings'] = $preview_settings;
|
||||
|
||||
echo json_encode($return);
|
||||
}
|
||||
wp_die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used in an AJAX call to duplicate a Feed
|
||||
* $_POST data.
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function duplicate_feed()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! sby_current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
if (! empty($_POST['feed_id'])) {
|
||||
DB::duplicate_feed_query($_POST['feed_id']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used in an AJAX call to delete feeds from the Database
|
||||
* $_POST data.
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function delete_feed()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! sby_current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
if (! empty($_POST['feeds_ids']) && is_array($_POST['feeds_ids'])) {
|
||||
DB::delete_feeds_query($_POST['feeds_ids']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create Feed Name
|
||||
* This will create the feed name when creating new Feeds
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function create_feed_name($selected_feed, $selected_feed_models)
|
||||
{
|
||||
$feed_name = 'YouTube Feed';
|
||||
if ($selected_feed) {
|
||||
$feed_name .= ' - ' . ucfirst($selected_feed);
|
||||
}
|
||||
|
||||
return DB::feeds_query_name($feed_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to dismiss onboarding using AJAX
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function after_dismiss_onboarding()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! sby_current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
$type = 'newuser';
|
||||
if (isset($_POST['was_active'])) {
|
||||
$type = sanitize_text_field($_POST['was_active']);
|
||||
}
|
||||
|
||||
Feed_Builder::update_onboarding_meta('dismissed', $type);
|
||||
|
||||
wp_die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used in an AJAX call to delete a feed cache from the Database
|
||||
* $_POST data.
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function feed_refresh()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! sby_current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
$feed_id = sanitize_key($_POST['feedID']);
|
||||
|
||||
sby_clear_cache();
|
||||
self::feed_customizer_fly_preview();
|
||||
wp_die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter feed model data
|
||||
*
|
||||
* @since 2.2
|
||||
*/
|
||||
public static function filter_feed_model_data($feed_data, $feedtype)
|
||||
{
|
||||
if ($feedtype == 'channel') {
|
||||
$channel = $feed_data['channel'];
|
||||
} elseif ($feedtype == 'favorites') {
|
||||
$channel = $feed_data['favorites'];
|
||||
} elseif ($feedtype == 'live') {
|
||||
$channel = $feed_data['live'];
|
||||
}
|
||||
|
||||
$channel_id = '';
|
||||
$channel_url = '';
|
||||
if (strpos($channel, '@') !== false && ( strpos($channel, 'https://') !== false || strpos($channel, 'http://') !== false )) {
|
||||
$channel_url = $channel;
|
||||
} elseif (strpos($channel, '@') !== false) {
|
||||
$channel_url = 'https://www.youtube.com/' . $channel;
|
||||
}
|
||||
if ($channel_url) {
|
||||
$saved_channel_id = Util::get_saved_channel_id($channel);
|
||||
if (! $saved_channel_id) {
|
||||
$channel_id = Util::get_channel_id_by_api_request($channel_url);
|
||||
} else {
|
||||
$channel_id = $saved_channel_id;
|
||||
}
|
||||
} else {
|
||||
$channel_id = $channel;
|
||||
}
|
||||
|
||||
if ($feedtype == 'channel') {
|
||||
$feed_data['channel'] = $channel_id;
|
||||
} elseif ($feedtype == 'favorites') {
|
||||
$feed_data['favorites'] = $channel_id;
|
||||
} elseif ($feedtype == 'live') {
|
||||
$feed_data['live'] = $channel_id;
|
||||
}
|
||||
|
||||
return $feed_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines what table and sanitization should be used
|
||||
* when handling feed setting data.
|
||||
*
|
||||
* TODO: Add settings that need something other than sanitize_text_field
|
||||
*
|
||||
* @param string $key
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function get_data_type($key)
|
||||
{
|
||||
switch ($key) {
|
||||
case 'sources':
|
||||
$return = array(
|
||||
'table' => 'feed_settings',
|
||||
'sanitization' => 'sanitize_text_field',
|
||||
);
|
||||
break;
|
||||
case 'feed_title':
|
||||
$return = array(
|
||||
'table' => 'feeds',
|
||||
'sanitization' => 'sanitize_text_field',
|
||||
);
|
||||
break;
|
||||
case 'feed_name':
|
||||
$return = array(
|
||||
'table' => 'feeds',
|
||||
'sanitization' => 'sanitize_text_field',
|
||||
);
|
||||
break;
|
||||
case 'status':
|
||||
$return = array(
|
||||
'table' => 'feeds',
|
||||
'sanitization' => 'sanitize_text_field',
|
||||
);
|
||||
break;
|
||||
case 'author':
|
||||
$return = array(
|
||||
'table' => 'feeds',
|
||||
'sanitization' => 'int',
|
||||
);
|
||||
break;
|
||||
default:
|
||||
$return = array(
|
||||
'table' => 'feed_settings',
|
||||
'sanitization' => 'sanitize_text_field',
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if boolean
|
||||
* for a value
|
||||
*
|
||||
* @param string $type
|
||||
* @param int|string $value
|
||||
*
|
||||
* @return int|string
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function is_boolean($value)
|
||||
{
|
||||
return ( $value === 'true' || $value === 'false' || is_bool($value) ) ? true : false;
|
||||
}
|
||||
|
||||
public static function cast_boolean($value)
|
||||
{
|
||||
if ($value === 'true' || $value === true || $value === 'on') {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Uses the appropriate sanitization function and returns the result
|
||||
* for a value
|
||||
*
|
||||
* @param string $type
|
||||
* @param int|string $value
|
||||
*
|
||||
* @return int|string
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public static function sanitize($type, $value)
|
||||
{
|
||||
switch ($type) {
|
||||
case 'int':
|
||||
$return = intval($value);
|
||||
break;
|
||||
case 'boolean':
|
||||
$return = self::cast_boolean($value);
|
||||
break;
|
||||
default:
|
||||
$return = sanitize_text_field(wp_unslash($value));
|
||||
break;
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear comments cache AJAX call
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 2.3.3
|
||||
*/
|
||||
public static function clear_comments_cache()
|
||||
{
|
||||
check_ajax_referer('sby-admin', 'nonce');
|
||||
|
||||
if (! current_user_can('manage_youtube_feed_options')) {
|
||||
wp_send_json_error();
|
||||
}
|
||||
|
||||
delete_transient('sby_comment_cache');
|
||||
echo 'success';
|
||||
wp_die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Carousel Column Preview.
|
||||
*
|
||||
* @param string $preview_screen
|
||||
* @param array $preview_settings
|
||||
* @return array
|
||||
*
|
||||
* @since 2.3.4
|
||||
*/
|
||||
public static function carousel_column_preview($preview_screen, $preview_settings) {
|
||||
// Return if preview_settings does not exist.
|
||||
if(empty($preview_settings)) {
|
||||
return $preview_settings;
|
||||
}
|
||||
|
||||
$layout = !empty($preview_settings['layout']) ? $preview_settings['layout'] : '';
|
||||
|
||||
// As we do not use iframe owl slider still thinks that it's in desktop mode ( on mobile view inside preview ). So we just intercepted the desktop value with the mobile one to simulate the desired behavior.
|
||||
if( !empty( $preview_screen ) && 'mobile' === $preview_screen && 'carousel' === $layout ) {
|
||||
$preview_settings['cols'] = $preview_settings['colsmobile'];
|
||||
}
|
||||
|
||||
return $preview_settings;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user