Files
szkoleniauryzaj.pl/wp-content/plugins/youtube-feed-pro/youtube-feed.php
2026-04-26 23:47:49 +02:00

693 lines
23 KiB
PHP

<?php
/*
Plugin Name: Feeds for YouTube Pro Developer
Plugin URI: https://smashballoon.com/youtube-feed
Description: Feeds for YouTube allows you to display completely customizable YouTube feeds from any channel.
Version: 2.6.0
Requires PHP: 7.4
Author: Smash Balloon
Author URI: https://smashballoon.com/
Text Domain: feeds-for-youtube
*/
/*
Copyright 2024 Smash Balloon (email: hey@smashballoon.com)
This program is paid software; you may not redistribute it under any
circumstances without the expressed written consent of the plugin author.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
use Smashballoon\Customizer\DB;
use Smashballoon\Customizer\Container;
use Smashballoon\Customizer\PreviewProvider;
use SmashBalloon\YouTubeFeed\Admin\SBY_Notifications;
use SmashBalloon\YouTubeFeed\Admin\SBY_New_User;
use SmashBalloon\YouTubeFeed\Admin\SBY_Tracking;
use SmashBalloon\YouTubeFeed\Blocks\SBY_Blocks;
use SmashBalloon\YouTubeFeed\Customizer\ShortcodePreviewProvider;
use SmashBalloon\YouTubeFeed\Feed_Locator;
use SmashBalloon\YouTubeFeed\Pro\SBY_CPT;
use SmashBalloon\YouTubeFeed\Pro\SBY_Search;
use SmashBalloon\YouTubeFeed\SBY_Cron_Updater;
use SmashBalloon\YouTubeFeed\SBY_Posts_Manager;
use SmashBalloon\YouTubeFeed\Services\ActivationService;
use SmashBalloon\YouTubeFeed\Services\Admin\AdminServiceContainer;
update_option( 'sby_license_key', '********************************' );
update_option( 'sby_license_status', 'valid' );
update_option( 'sby_license_last_check_timestamp', time() );
update_option( 'sby_license_data', [ 'success' => true, 'license' => 'valid', 'item_id' => 762322, 'price_id' => 1 ] );
require_once trailingslashit(plugin_dir_path(__FILE__)) . 'activation.php';
require_once trailingslashit(plugin_dir_path(__FILE__)) . 'bootstrap.php';
if (!defined('SBY_STORE_URL')) {
define('SBY_STORE_URL', 'https://smashballoon.com/');
}
$sby_download_name = "Youtube Feed Pro Developer";
if (!defined('SBY_PLUGIN_EDD_NAME')) {
define('SBY_PLUGIN_EDD_NAME', $sby_download_name);
}
// The ID of the legacy product.
$sby_download_id = 762322; // 762236, 762320, 762322
// The ID of product for new pricing tier. Used for renewals.
// $sby_download_id = 762322; // 1722787, 1722791, 1722793
if ( ! class_exists( 'EDD_SL_Plugin_Updater' ) ) {
// load custom updater
include_once( dirname( __FILE__ ) . '/EDD_SL_Plugin_Updater.php' );
}
if ( ! defined( 'ABSPATH' ) ) {
exit;
} // Exit if accessed directly
define( 'SBY_PRO', true );
if ( ! defined( 'SBYVER' ) ) {
define( 'SBYVER', '2.6.0' );
}
if ( ! defined( 'SBY_DBVERSION' ) ) {
define( 'SBY_DBVERSION', '2.3' );
}
if ( ! defined( 'SBY_BUILDER_DIR' ) ) {
define( 'SBY_BUILDER_DIR', SBY_PLUGIN_DIR . 'admin/builder/' );
}
if ( ! defined( 'SBY_BUILDER_URL' ) ) {
define( 'SBY_BUILDER_URL', SBY_PLUGIN_URL . 'admin/builder/' );
}
if ( ! defined( 'SBY_API_URL' ) ) {
define( 'SBY_API_URL', 'https://reviews.smashballoon.com/api/v1.0/' );
}
// Setup customizer
$customizer_container = Container::getInstance();
$customizer_container->set( PreviewProvider::class, new ShortcodePreviewProvider() );
$customizer_container->set( \Smashballoon\Customizer\DB::class, new \SmashBalloon\YouTubeFeed\Customizer\DB() );
$customizer_container->set( \Smashballoon\Customizer\Config::class, new \SmashBalloon\YouTubeFeed\Customizer\Config() );
$customizer_container->set( \Smashballoon\Customizer\ProxyProvider::class, new \SmashBalloon\YouTubeFeed\Customizer\ProxyProvider() );
if ( ! function_exists( 'sby_init' ) ) {
/**
* Define constants and load plugin files
*
* @since 2.0
*/
function sby_init() {
// Plugin Base Name
if ( ! defined( 'SBY_PLUGIN_BASENAME' ) ) {
define( 'SBY_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
}
// Cron Updating Cache Time 60 days
if ( ! defined( 'SBY_CRON_UPDATE_CACHE_TIME' ) ) {
define( 'SBY_CRON_UPDATE_CACHE_TIME', 60 * 60 * 24 * 60 );
}
// Plugin Base Name
if ( ! defined( 'SBY_BACKUP_PREFIX' ) ) {
define( 'SBY_BACKUP_PREFIX', '!' );
}
if ( ! defined( 'SBY_USE_BACKUP_PREFIX' ) ) {
define( 'SBY_USE_BACKUP_PREFIX', '&' );
}
if ( ! defined( 'SBY_CHANNEL_CACHE_PREFIX' ) ) {
define( 'SBY_CHANNEL_CACHE_PREFIX', '~sby_' );
}
// Max Records in Database for Image Resizing
if ( ! defined( 'SBY_MAX_RECORDS' ) ) {
define( 'SBY_MAX_RECORDS', 100 );
}
if ( ! defined( 'SBY_MAX_SINGLE_PAGE' ) ) {
define( 'SBY_MAX_SINGLE_PAGE', 50 );
}
if ( ! defined( 'SBY_TEXT_DOMAIN' ) ) {
define( 'SBY_TEXT_DOMAIN', 'feeds-for-youtube' );
}
if ( ! defined( 'SBY_SLUG' ) ) {
define( 'SBY_SLUG', 'youtube-feed' );
}
if ( ! defined( 'SBY_SEARCH_SLUG' ) ) {
define( 'SBY_SEARCH_SLUG', 'youtube-feed-search' );
}
if ( ! defined( 'SBY_SEARCH_NAME' ) ) {
define( 'SBY_SEARCH_NAME', 'sbys' );
}
if ( ! defined( 'SBY_PLUGIN_NAME' ) ) {
define( 'SBY_PLUGIN_NAME', __( 'Feeds for YouTube', 'feeds-for-youtube' ) );
}
if ( ! defined( 'SBY_INDEF_ART' ) ) {
define( 'SBY_INDEF_ART', __( 'a', 'feeds-for-youtube' ) );
}
if ( ! defined( 'SBY_SOCIAL_NETWORK' ) ) {
define( 'SBY_SOCIAL_NETWORK', __( 'YouTube', 'feeds-for-youtube' ) );
}
if ( ! defined( 'SBY_SETUP_URL' ) ) {
define( 'SBY_SETUP_URL', 'https://smashballoon.com/youtube-feed/free' );
}
if ( ! defined( 'SBY_SUPPORT_URL' ) ) {
define( 'SBY_SUPPORT_URL', 'https://smashballoon.com/youtube-feed/support' );
}
if ( ! defined( 'SBY_OAUTH_PROCESSOR_URL' ) ) {
define( 'SBY_OAUTH_PROCESSOR_URL', 'https://smashballoon.com/youtube-login/?return_uri=' );
}
if ( ! defined( 'SBY_DEMO_URL' ) ) {
define( 'SBY_DEMO_URL', 'https://smashballoon.com/youtube-feed/demo' );
}
if ( ! defined( 'SBY_PRO_LOGO' ) ) {
define( 'SBY_PRO_LOGO', 'https://smashballoon.com/wp-content/themes/smashballoon/img/smash-balloon-logo-small.png' );
}
if ( ! defined( 'SBY_MENU_SLUG' ) ) {
define( 'SBY_MENU_SLUG', 'sby-feed-builder' );
}
require_once trailingslashit( SBY_PLUGIN_DIR ) . 'inc/sby-functions.php';
$container = new \SmashBalloon\YouTubeFeed\Services\ServiceContainer();
$container->register();
// Pro Services
$pro_container = new \SmashBalloon\YouTubeFeed\Pro\Services\ServiceContainerPro();
$pro_container->register();
global $sby_settings;
$sby_settings = get_option( 'sby_settings', array() );
$sby_settings = wp_parse_args( $sby_settings, sby_settings_defaults() );
// set license key as global variable
$license_key = get_option( 'sby_license_key' );
$sby_blocks = new SBY_Blocks( \Smashballoon\Customizer\Feed_Builder::instance(), new Smashballoon\Customizer\DB );
if ( $sby_blocks->allow_load() ) {
$sby_blocks->load();
}
if ( is_admin() ) {
require_once trailingslashit( SBY_PLUGIN_DIR ) . 'inc/Admin/admin-functions.php';
sby_admin_init();
$admin_container = new AdminServiceContainer();
$admin_container->register();
if ( version_compare( PHP_VERSION, '5.3.0' ) >= 0
&& version_compare( get_bloginfo( 'version' ), '4.6', '>' ) ) {
require_once trailingslashit( SBY_PLUGIN_DIR ) . 'inc/Admin/SBY_Notifications.php';
$sby_notifications = new SBY_Notifications();
$sby_notifications->init();
require_once trailingslashit( SBY_PLUGIN_DIR ) . 'inc/Admin/SBY_New_User.php';
$sby_new_user = new SBY_New_User();
$sby_new_user->init();
}
}
\SmashBalloon\YouTubeFeed\Container::getInstance()->get( SBY_Tracking::class );
\Smashballoon\Customizer\Feed_Builder::instance();
sby_builder_pro();
$sby_search = new SBY_Search();
$sby_cpt = new SBY_CPT();
global $sby_posts_manager;
$sby_posts_manager = new SBY_Posts_Manager( 'sby', get_option( 'sby_errors', array() ), get_option( 'sby_ajax_status', array(
'tested' => false,
'successful' => false
) ) );
}
add_action( 'plugins_loaded', 'sby_init' );
function sby_register_cpt() {
register_post_type( SBY_CPT, array(
'label' => SBY_SOCIAL_NETWORK,
'labels' => array(
'name' => SBY_SOCIAL_NETWORK . ' ' . __( 'Videos', 'feeds-for-youtube' ),
'singular_name' => __( SBY_SOCIAL_NETWORK . ' ' . 'Video', 'feeds-for-youtube' ),
'add_new' => __( 'Add New Video', 'feeds-for-youtube' ),
'add_new_item' => __( 'Add New Video', 'feeds-for-youtube' ),
'edit_item' => __( 'Edit Video', 'feeds-for-youtube' ),
'view_item' => __( 'View Video', 'feeds-for-youtube' ),
'all_items' => __( 'All Videos', 'feeds-for-youtube' ),
),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_icon' => 'dashicons-video-alt3',
'rewrite' => array( 'slug' => 'videos' ),
'has_archive' => true,
'hierarchical' => false,
'capability_type' => array( 'sby_video', 'sby_videos' ),
'map_meta_cap' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'author', 'comments' ) //'comments'
) );
}
add_action( 'init', 'sby_register_cpt' );
function sby_add_caps() {
global $wp_roles;
$pto = get_post_type_object( SBY_CPT );
$admin_caps = array(
'edit_' . SBY_CPT,
'read_' . SBY_CPT,
'delete_' . SBY_CPT,
'edit_' . SBY_CPT,
'edit_others_' . SBY_CPT,
'publish_' . SBY_CPT,
'read_private_' . SBY_CPT,
'read',
'delete_' . SBY_CPT,
'delete_private_' . SBY_CPT,
'delete_published_' . SBY_CPT,
'delete_others_' . SBY_CPT,
'edit_private_' . SBY_CPT,
'edit_published_' . SBY_CPT,
);
$author_caps = array(
'edit_' . SBY_CPT,
'read_' . SBY_CPT,
'delete_' . SBY_CPT,
'edit_' . SBY_CPT,
'publish_' . SBY_CPT,
'read',
'delete_' . SBY_CPT,
'delete_published_' . SBY_CPT,
'edit_published_' . SBY_CPT,
);
if ( ! empty( $pto ) ) {
foreach ( array( 'administrator', 'editor' ) as $role_id ) {
foreach ( $admin_caps as $cap ) {
$wp_roles->add_cap( $role_id, $cap );
}
}
foreach ( $author_caps as $cap ) {
$wp_roles->add_cap( 'author', $cap );
}
}
}
add_action( 'admin_init', 'sby_add_caps', 90 );
/**
* Add the custom interval of 30 minutes for cron caching
*
* @param array $schedules current list of cron intervals
*
* @return array
*
* @since 2.0
*/
function sby_cron_custom_interval( $schedules ) {
$schedules['sby30mins'] = array(
'interval' => 30 * 60,
'display' => __( 'Every 30 minutes', 'feeds-for-youtube' )
);
$schedules['sbyweekly'] = array(
'interval' => 3600 * 24 * 7,
'display' => __( 'Weekly', 'feeds-for-youtube' )
);
return $schedules;
}
add_filter( 'cron_schedules', 'sby_cron_custom_interval' );
/**
* Create database tables, schedule cron events, initiate capabilities
*
* @param bool $network_wide is a multisite network activation
*
* @since 2.0 database tables and capabilties created
* @since 1.0
*/
function sby_activate( $network_wide ) {
include_once trailingslashit( SBY_PLUGIN_DIR ) . 'inc/sby-functions.php';
//Clear page caching plugins and autoptomize
if ( is_callable( 'sby_clear_page_caches' ) ) {
sby_clear_page_caches();
}
//Run cron twice daily when plugin is first activated for new users
if ( ! wp_next_scheduled( 'sby_cron_job' ) ) {
wp_schedule_event( time(), 'twicedaily', 'sby_cron_job' );
}
if ( ! wp_next_scheduled( 'sby_notification_update' ) ) {
$timestamp = strtotime( 'next monday' );
$timestamp = $timestamp + ( 3600 * 24 * 7 );
$six_am_local = $timestamp + sby_get_utc_offset() + ( 6 * 60 * 60 );
wp_schedule_event( $six_am_local, 'sbyweekly', 'sby_notification_update' );
}
$sby_settings = get_option( 'sby_settings', array() );
if ( isset( $sby_settings['caching_type'] ) && $sby_settings['caching_type'] === 'background' ) {
SBY_Cron_Updater::start_cron_job( $sby_settings['cache_cron_interval'], $sby_settings['cache_cron_time'], $sby_settings['cache_cron_am_pm'] );
}
if ( is_multisite() && $network_wide && function_exists( 'get_sites' ) && class_exists( 'WP_Site_Query' ) ) {
// Get all blogs in the network and activate plugin on each one
$sites = get_sites();
foreach ( $sites as $site ) {
switch_to_blog( $site->blog_id );
$upload = wp_upload_dir();
$upload_dir = $upload['basedir'];
$upload_dir = trailingslashit( $upload_dir ) . SBY_UPLOADS_NAME;
if ( ! file_exists( $upload_dir ) ) {
$created = wp_mkdir_p( $upload_dir );
}
restore_current_blog();
}
} else {
$upload = wp_upload_dir();
$upload_dir = $upload['basedir'];
$upload_dir = trailingslashit( $upload_dir ) . SBY_UPLOADS_NAME;
if ( ! file_exists( $upload_dir ) ) {
$created = wp_mkdir_p( $upload_dir );
}
}
global $wp_roles;
$wp_roles->add_cap( 'administrator', 'manage_youtube_feed_options' );
//sby_videos
//Delete all transients
global $wpdb;
$table_name = $wpdb->prefix . "options";
$wpdb->query( "
DELETE
FROM $table_name
WHERE `option_name` LIKE ('%\_transient\_sby\_%')
" );
$wpdb->query( "
DELETE
FROM $table_name
WHERE `option_name` LIKE ('%\_transient\_timeout\_sby\_%')
" );
$wpdb->query( "
DELETE
FROM $table_name
WHERE `option_name` LIKE ('%\_transient\_&sby\_%')
" );
$wpdb->query( "
DELETE
FROM $table_name
WHERE `option_name` LIKE ('%\_transient\_timeout\_&sby\_%')
" );
$wpdb->query( "
DELETE
FROM $table_name
WHERE `option_name` LIKE ('%\_transient\_\$sby\_%')
" );
$wpdb->query( "
DELETE
FROM $table_name
WHERE `option_name` LIKE ('%\_transient\_timeout\_\$sby\_%')
" );
}
register_activation_hook( __FILE__, 'sby_activate' );
/**
* Stop cron events when deactivated
*
* @since 1.0
*/
function sby_deactivate() {
wp_clear_scheduled_hook( 'sby_cron_job' );
wp_clear_scheduled_hook( 'sby_notification_update' );
wp_clear_scheduled_hook( 'sby_feed_update' );
wp_clear_scheduled_hook( 'sby_usage_tracking_cron' );
}
register_deactivation_hook( __FILE__, 'sby_deactivate' );
/**
* Compares previous plugin version and updates database related
* items as needed
*
* @since 2.0
*/
function sby_check_for_db_updates() {
$db_ver = get_option( 'sby_db_version', SBY_DBVERSION );
if ( version_compare( $db_ver, '1.2', '<' ) ) {
sby_add_caps();
update_option( 'sby_db_version', '2.0' );
}
if ( version_compare( $db_ver, '1.3', '<' ) ) {
if ( ! wp_next_scheduled( 'sby_notification_update' ) ) {
$timestamp = strtotime( 'next monday' );
$timestamp = $timestamp + ( 3600 * 24 * 7 );
$six_am_local = $timestamp + sby_get_utc_offset() + ( 6 * 60 * 60 );
wp_schedule_event( $six_am_local, 'sbyweekly', 'sby_notification_update' );
}
}
}
add_action( 'wp_loaded', 'sby_check_for_db_updates' );
/**
* Create database tables for sub-site if multisite
*
* @param int $blog_id
* @param int $user_id
* @param string $domain
* @param string $path
* @param string $site_id
* @param array $meta
*
* @since 2.0
*/
function sby_on_create_blog( $blog_id, $user_id, $domain, $path, $site_id, $meta ) {
if ( is_plugin_active_for_network( 'youtube-feed-pro/youtube-feed-pro.php' ) ) {
switch_to_blog( $blog_id );
restore_current_blog();
}
}
add_action( 'wpmu_new_blog', 'sby_on_create_blog', 10, 6 );
/**
* Delete custom tables if not preserving settings
*
* @param array $tables tables to drop
*
* @return array
*
* @since 2.0
*/
function sby_on_delete_blog( $tables ) {
$options = get_option( 'sby_settings' );
$preserve_settings = $options['preserve_settings'];
if ( $preserve_settings ) {
return;
}
global $wpdb;
$tables[] = $wpdb->prefix . 'sby_items';
$tables[] = $wpdb->prefix . 'sby_items_feeds';
return $tables;
}
add_filter( 'wpmu_drop_tables', 'sby_on_delete_blog' );
function sby_settings_defaults() {
$defaults = array(
'connected_accounts' => array(),
'type' => 'channel',
'channel' => '',
'num' => 9,
'nummobile' => 9,
'minnum' => 9,
'widthresp' => true,
'class' => '',
'height' => '',
'heightunit' => '%',
'disablemobile' => false,
'itemspacing' => 5,
'itemspacingunit' => 'px',
'background' => '',
'headercolor' => '',
'subscribecolor' => '',
'subscribehovercolor' => '',
'subscribetextcolor' => '',
'buttoncolor' => '',
'buttonhovercolor' => '',
'buttontextcolor' => '',
'layout' => 'grid',
'feedtemplate' => 'default',
'playvideo' => 'automatically',
'sortby' => 'none',
'imageres' => 'auto',
'showheader' => true,
'headerstyle' => 'standard',
'customheadertext' => __( 'We are on YouTube', 'feeds-for-youtube' ),
'customheadersize' => 'small',
'customheadertextcolor' => '',
'showdescription' => true,
'showbutton' => true,
'headersize' => 'small',
'headeroutside' => false,
'showsubscribe' => true,
'buttontext' => __( 'Load More...', 'feeds-for-youtube' ),
'subscribetext' => __( 'Subscribe', 'feeds-for-youtube' ),
'caching_type' => 'page',
'cache_time' => 1,
'cache_time_unit' => 'hours',
'backup_cache_enabled' => true,
'resizeprocess' => 'background',
'disable_resize' => true,
'storage_process' => 'background',
'favor_local' => false,
'disable_js_image_loading' => false,
'ajax_post_load' => false,
'ajaxtheme' => false,
'enqueue_css_in_shortcode' => false,
'font_method' => 'svg',
'customtemplates' => false,
'cols' => 3,
'colsmobile' => 2,
'playerratio' => '9:16',
'eagerload' => false,
'custom_css' => '',
'custom_js' => '',
'gdpr' => 'auto',
'disablecdn' => false,
'allowcookies' => false,
// pro only
'usecustomsearch' => false,
'headerchannel' => '',
'customsearch' => '',
'showpast' => true,
'showlikes' => true,
'carouselcols' => 3,
'carouselcolsmobile' => 2,
'carouselarrows' => true,
'carouselpag' => true,
'carouselautoplay' => false,
'infoposition' => 'below',
'include' => array( 'title', 'icon', 'user', 'date', 'countdown' ),
'hoverinclude' => array( 'description', 'stats' ),
'descriptionlength' => 150,
'userelative' => true,
'dateformat' => '0',
'customdate' => '',
'showsubscribers' => true,
'enablelightbox' => true,
'subscriberstext' => __( 'subscribers', 'feeds-for-youtube' ),
'viewstext' => __( 'views', 'feeds-for-youtube' ),
'agotext' => __( 'ago', 'feeds-for-youtube' ),
'beforedatetext' => __( 'Streaming live', 'feeds-for-youtube' ),
'beforestreamtimetext' => __( 'Streaming live in', 'feeds-for-youtube' ),
'minutetext' => __( 'minute', 'feeds-for-youtube' ),
'minutestext' => __( 'minutes', 'feeds-for-youtube' ),
'hourstext' => __( 'hours', 'feeds-for-youtube' ),
'thousandstext' => __( 'K', 'feeds-for-youtube' ),
'millionstext' => __( 'M', 'feeds-for-youtube' ),
'watchnowtext' => __( 'Watch Now', 'feeds-for-youtube' ),
'cta' => 'related',
'colorpalette' => 'inherit',
'linktext' => __( 'Learn More', 'feeds-for-youtube' ),
'linkurl' => '',
'linkopentype' => 'same',
'linkcolor' => '',
'linktextcolor' => '',
'videocardstyle' => 'regular',
'videocardlayout' => 'vertical',
'custombgcolor1' => '',
'customtextcolor1' => '',
'customtextcolor2' => '',
'customlinkcolor1' => '',
'custombuttoncolor1' => '',
'custombuttoncolor2' => '',
'boxedbgcolor' => '#ffffff',
'boxborderradius' => '12',
'enableboxshadow' => false,
'descriptiontextsize' => '13px',
'save_featured_images' => false,
'subscribelinkcolorbg' => '',
'subscribebtnprimarycolor' => '',
'subscribebtnsecondarycolor' => '',
'subscribebtntextcolor' => '',
// pro comments
'numcomments' => 20,
'enablecomments' => false,
// Video elements color
'playiconcolor' => '',
'videotitlecolor' => '',
'videouserecolor' => '',
'videoviewsecolor' => '',
'videocountdowncolor' => '',
'videostatscolor' => '',
'videodescriptioncolor' => '',
'enablesubscriberlink' => true,
//cron
'cache_cron_interval' => '1hour',
'cache_cron_time' => '1:00',
'cache_cron_am_pm' => 'am',
'disable_wp_posts' => false,
);
return $defaults;
}
// Add a Settings link to the plugin on the Plugins page
$plugin_file = 'youtube-feed-pro/youtube-feed.php';
add_filter( "plugin_action_links_{$plugin_file}", 'sby_add_settings_link', 10, 2 );
function sby_add_settings_link( $links, $file ) {
$sby_settings_link = '<a href="' . admin_url( 'admin.php?page=sby-feed-builder' ) . '">' . __( 'Settings', 'feeds-for-youtube' ) . '</a>';
array_unshift( $links, $sby_settings_link );
return $links;
}
function sby_text_domain() {
load_plugin_textdomain( 'feeds-for-youtube', false, dirname( plugin_basename(__FILE__) ) . '/languages' );
}
add_action( 'init', 'sby_text_domain' );
function sby_plugin_updater() {
// retrieve license key from the DB
$sby_license_key = trim( get_option( 'sby_license_key' ) );
// setup the updater
$edd_updater = new EDD_SL_Plugin_Updater( SBY_STORE_URL, __FILE__, array(
'version' => SBYVER, // current version number
'license' => $sby_license_key, // license key
'item_name' => SBY_PLUGIN_EDD_NAME, // name of this plugin
'author' => 'Smash Balloon' // author of this plugin
)
);
}
add_action( 'admin_init', 'sby_plugin_updater', 0 );
//BUILDER CODE
function sby_builder_pro() {
return \Smashballoon\Customizer\Feed_Builder::instance();
}
}