', 'popupContentBtn' => '
' . self::builder_svg_icons()['tag'] . __( 'Instagram Pro users get 50% OFF', 'instagram-feed' ) .'
', 'bullets' => [ 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => [ __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ] ], 'buyUrl' => sprintf('https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=header') ), 'postStyling' => array( 'heading' => __( 'Display Captions, Likes, and Comments', 'instagram-feed' ), 'description' => __( 'Upgrade to Pro to display post captions below each post and in the lightbox, which can be crawled by search engines to help boost SEO.', 'instagram-feed' ), 'img' => '', 'popupContentBtn' => '
' . self::builder_svg_icons()['tag'] . __( 'Instagram Pro users get 50% OFF', 'instagram-feed' ) .'
', 'bullets' => [ 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => [ __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ] ], 'buyUrl' => sprintf('https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=posts') ), 'lightbox' => array( 'heading' => __( 'Upgrade to Pro to enable the popup Lightbox', 'instagram-feed' ), 'description' => __( 'Allow visitors to view your photos and videos in a beautiful full size lightbox, keeping them on your site for longer to discover more of your content.', 'instagram-feed' ), 'img' => '', 'popupContentBtn' => '
' . self::builder_svg_icons()['tag'] . __( 'Instagram Pro users get 50% OFF', 'instagram-feed' ) .'
', 'bullets' => [ 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => [ __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ] ], 'buyUrl' => sprintf('https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=lightbox') ), 'filtermoderation' => array( 'heading' => __( 'Get Advanced Moderation and Filters with Pro', 'instagram-feed' ), 'description' => __( 'Use powerful moderation tools to easily create feeds of only specific photos, or choose specific ones to exclude. You can also easily choose to include or block specific words or phrases in your posts.', 'instagram-feed' ), 'img' => '', 'popupContentBtn' => '
' . self::builder_svg_icons()['tag'] . __( 'Instagram Pro users get 50% OFF', 'instagram-feed' ) .'
', 'bullets' => [ 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => [ __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ] ], 'buyUrl' => sprintf('https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=filters') ), 'shoppablefeed' => array( 'heading' => __( 'Upgrade to Pro to Get Shoppable Feeds', 'instagram-feed' ), 'description' => __( 'Automatically link Instagram posts to custom URLs of your choosing by adding the URL in the caption, or manually add links to specific pages or products on your site (or other sites) in a quick and easy way.', 'instagram-feed' ), 'img' => '', 'popupContentBtn' => '
' . self::builder_svg_icons()['tag'] . __( 'Instagram Pro users get 50% OFF', 'instagram-feed' ) .'
', 'bullets' => [ 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => [ __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ] ], 'buyUrl' => sprintf('https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=shoppable') ), ], ); if ( $newly_retrieved_source_connection_data ) { $sbi_builder['newSourceData'] = $newly_retrieved_source_connection_data; } if ( isset( $_GET['manualsource'] ) && $_GET['manualsource'] == true ) { $sbi_builder['manualSourcePopupInit'] = true; } $maybe_feed_customizer_data = SBI_Feed_Saver_Manager::maybe_feed_customizer_data(); if( $maybe_feed_customizer_data ){ sb_instagram_scripts_enqueue(true); $sbi_builder['customizerFeedData'] = $maybe_feed_customizer_data; $sbi_builder['customizerSidebarBuilder'] = \InstagramFeed\Builder\Tabs\SBI_Builder_Customizer_Tab::get_customizer_tabs(); $sbi_builder['wordpressPageLists'] = $this->get_wp_pages(); $sbi_builder['instagram_feed_dismiss_lite'] = get_transient( 'instagram_feed_dismiss_lite' ); if ( ! isset( $_GET['feed_id'] ) || $_GET['feed_id'] === 'legacy' ) { $feed_id = 'legacy'; $customizer_atts = [ 'feed' => 'legacy', 'customizer' => true ]; } elseif ( intval( $_GET['feed_id'] ) > 0 ) { $feed_id = intval( $_GET['feed_id'] ); $customizer_atts = [ 'feed' => $feed_id, 'customizer' => true ]; } if( ! empty( $feed_id ) ){ $settings_preview = self::add_customizer_att( $customizer_atts ); if ( $feed_id === 'legacy' ) { $preview_settings = \SB_Instagram_Settings::get_legacy_feed_settings(); $preview_settings['customizer'] = true; $sbi_builder['feedInitOutput'] = htmlspecialchars(display_instagram( $customizer_atts, $preview_settings )); } else { $sbi_builder['feedInitOutput'] = htmlspecialchars(display_instagram( $settings_preview, true )); } } //Date global $wp_locale; wp_enqueue_script( "sbi-date_i18n", SBI_PLUGIN_URL.'admin/builder/assets/js/date_i18n.js', null, SBIVER, true ); $monthNames = array_map( array(&$wp_locale, 'get_month'), range(1, 12) ); $monthNamesShort = array_map( array(&$wp_locale, 'get_month_abbrev'), $monthNames ); $dayNames = array_map( array(&$wp_locale, 'get_weekday'), range(0, 6) ); $dayNamesShort = array_map( array(&$wp_locale, 'get_weekday_abbrev'), $dayNames ); wp_localize_script("sbi-date_i18n", "DATE_I18N", array( "month_names" => $monthNames, "month_names_short" => $monthNamesShort, "day_names" => $dayNames, "day_names_short" => $dayNamesShort ) ); } wp_enqueue_style( 'sbi-builder-style', SBI_PLUGIN_URL . 'admin/builder/assets/css/builder.css', false, SBIVER ); self::global_enqueue_ressources_scripts(); wp_enqueue_script( 'sbi-builder-app', SBI_PLUGIN_URL.'admin/builder/assets/js/builder.js', null, SBIVER, true ); // Customize screens $sbi_builder['customizeScreens'] = $this->get_customize_screens_text(); wp_localize_script( 'sbi-builder-app', 'sbi_builder', $sbi_builder ); wp_enqueue_media(); endif; endif; } /** * Get WP Pages List * * @return array * * @since 6.0 */ public function get_wp_pages(){ $pagesList = get_pages(); $pagesResult = []; if(is_array($pagesList)){ foreach ($pagesList as $page) { array_push($pagesResult, ['id' => $page->ID, 'title' => $page->post_title]); } } return $pagesResult; } /** * Global JS + CSS Files * * Shared JS + CSS ressources for the admin panel * * @since 6.0 */ public static function global_enqueue_ressources_scripts($is_settings = false){ wp_enqueue_style( 'feed-global-style', SBI_PLUGIN_URL . 'admin/builder/assets/css/global.css', false, SBIVER ); wp_enqueue_script( 'feed-builder-vue', 'https://cdn.jsdelivr.net/npm/vue@2.6.12', null, "2.6.12", true ); wp_enqueue_script( 'feed-colorpicker-vue', SBI_PLUGIN_URL.'admin/builder/assets/js/vue-color.min.js', null, SBIVER, true ); wp_enqueue_script( 'feed-builder-ressources', SBI_PLUGIN_URL.'admin/builder/assets/js/ressources.js', null, SBIVER, true ); wp_enqueue_script( 'sb-dialog-box', SBI_PLUGIN_URL.'admin/builder/assets/js/confirm-dialog.js', null, SBIVER, true ); wp_enqueue_script( 'install-plugin-popup', SBI_PLUGIN_URL.'admin/builder/assets/js/install-plugin-popup.js', null, SBIVER, true ); wp_enqueue_script( 'sb-add-source', SBI_PLUGIN_URL.'admin/builder/assets/js/add-source.js', null, SBIVER, true ); $newly_retrieved_source_connection_data = SBI_Source::maybe_source_connection_data(); $sbi_source = array( 'sources' => self::get_source_list(), 'sourceConnectionURLs' => SBI_Source::get_connection_urls($is_settings), 'nonce' => wp_create_nonce( 'sbi-admin' ), ); if ( $newly_retrieved_source_connection_data ) { $sbi_source['newSourceData'] = $newly_retrieved_source_connection_data; } if ( isset( $_GET['manualsource'] ) && $_GET['manualsource'] == true ) { $sbi_source['manualSourcePopupInit'] = true; } wp_localize_script( 'sb-add-source', 'sbi_source', $sbi_source ); } /** * Get Generic text * * @return array * * @since 6.0 */ public static function get_generic_text(){ $icons = SBI_Feed_Builder::builder_svg_icons(); return array( 'done' => __( 'Done', 'instagram-feed' ), 'title' => __( 'Settings', 'instagram-feed' ), 'dashboard' => __( 'Dashboard', 'instagram-feed' ), 'addNew' => __( 'Add New', 'instagram-feed' ), 'addSource' => __( 'Add Source', 'instagram-feed' ), 'addAnotherSource' => __( 'Add another Source', 'instagram-feed' ), 'addSourceType' => __( 'Add Another Source Type', 'instagram-feed' ), 'previous' => __( 'Previous', 'instagram-feed' ), 'next' => __( 'Next', 'instagram-feed' ), 'finish' => __( 'Finish', 'instagram-feed' ), 'new' => __( 'New', 'instagram-feed' ), 'update' => __( 'Update', 'instagram-feed' ), 'upgrade' => __( 'Try the Pro Demo', 'instagram-feed' ), 'settings' => __( 'Settings', 'instagram-feed' ), 'back' => __( 'Back', 'instagram-feed' ), 'backAllFeeds' => __( 'Back to all feeds', 'instagram-feed' ), 'createFeed' => __( 'Create Feed', 'instagram-feed' ), 'add' => __( 'Add', 'instagram-feed' ), 'change' => __( 'Change', 'instagram-feed' ), 'getExtention' => __( 'Get Extension', 'instagram-feed' ), 'viewDemo' => __( 'View Demo', 'instagram-feed' ), 'includes' => __( 'Includes', 'instagram-feed' ), 'photos' => __( 'Photos', 'instagram-feed' ), 'photo' => __( 'Photo', 'instagram-feed' ), 'apply' => __( 'Apply', 'instagram-feed' ), 'copy' => __( 'Copy', 'instagram-feed' ), 'edit' => __( 'Edit', 'instagram-feed' ), 'duplicate' => __( 'Duplicate', 'instagram-feed' ), 'delete' => __( 'Delete', 'instagram-feed' ), 'remove' => __( 'Remove', 'instagram-feed' ), 'removeSource' => __( 'Remove Source', 'instagram-feed' ), 'shortcode' => __( 'Shortcode', 'instagram-feed' ), 'clickViewInstances' => __( 'Click to view Instances', 'instagram-feed' ), 'usedIn' => __( 'Used in', 'instagram-feed' ), 'place' => __( 'place', 'instagram-feed' ), 'places' => __( 'places', 'instagram-feed' ), 'item' => __( 'Item', 'instagram-feed' ), 'items' => __( 'Items', 'instagram-feed' ), 'learnMore' => __( 'Learn More', 'instagram-feed' ), 'location' => __( 'Location', 'instagram-feed' ), 'page' => __( 'Page', 'instagram-feed' ), 'copiedClipboard' => __( 'Copied to Clipboard', 'instagram-feed' ), 'feedImported' => __( 'Feed imported successfully', 'instagram-feed' ), 'failedToImportFeed' => __( 'Failed to import feed', 'instagram-feed' ), 'timeline' => __( 'Timeline', 'instagram-feed' ), 'help' => __( 'Help', 'instagram-feed' ), 'admin' => __( 'Admin', 'instagram-feed' ), 'member' => __( 'Member', 'instagram-feed' ), 'reset' => __( 'Reset', 'instagram-feed' ), 'preview' => __( 'Preview', 'instagram-feed' ), 'name' => __( 'Name', 'instagram-feed' ), 'id' => __( 'ID', 'instagram-feed' ), 'token' => __( 'Token', 'instagram-feed' ), 'confirm' => __( 'Confirm', 'instagram-feed' ), 'cancel' => __( 'Cancel', 'instagram-feed' ), 'clear' => __( 'Clear', 'instagram-feed' ), 'clearFeedCache' => __( 'Clear Feed Cache', 'instagram-feed' ), 'saveSettings' => __( 'Save Changes', 'instagram-feed' ), 'feedName' => __( 'Feed Name', 'instagram-feed' ), 'shortcodeText' => __( 'Shortcode', 'instagram-feed' ), 'general' => __( 'General', 'instagram-feed' ), 'feeds' => __( 'Feeds', 'instagram-feed' ), 'translation' => __( 'Translation', 'instagram-feed' ), 'advanced' => __( 'Advanced', 'instagram-feed' ), 'error' => __( 'Error:', 'instagram-feed' ), 'errorNotice' => __( 'There was an error when trying to connect to Instagram.', 'instagram-feed' ), 'errorDirections' => '' . __( 'Directions on How to Resolve This Issue', 'instagram-feed' ) . '', 'errorSource' => __( 'Source Invalid', 'instagram-feed' ), 'errorEncryption' => __( 'Encryption Error', 'instagram-feed' ), 'invalid' => __( 'Invalid', 'instagram-feed' ), 'reconnect' => __( 'Reconnect', 'instagram-feed' ), 'feed' => __( 'feed', 'instagram-feed' ), 'sourceNotUsedYet' => __( 'Source is not used yet', 'instagram-feed' ), 'addImage' => __( 'Add Image', 'instagram-feed' ), 'businessRequired' => __( 'Business Account required', 'instagram-feed' ), 'selectedPost' => __( 'Selected Post', 'instagram-feed' ), 'productLink' => __( 'Product Link', 'instagram-feed' ), 'enterProductLink' => __( 'Add your product URL here', 'instagram-feed' ), 'editSources' => __( 'Edit Sources', 'instagram-feed' ), 'moderateFeed' => __( 'Moderate your feed', 'instagram-feed' ), 'moderateFeedSaveExit' => __( 'Save and Exit', 'instagram-feed' ), 'moderationMode' => __( 'Moderation Mode', 'instagram-feed' ), 'moderationModeEnterPostId' => __( 'Or Enter Post IDs to hide manually', 'instagram-feed' ), 'moderationModeTextareaPlaceholder' => __( 'Add words here to hide any posts containing these words', 'instagram-feed' ), 'filtersAndModeration' => __( 'Filters & Moderation', 'instagram-feed' ), 'topRated' => __( 'Top Rated', 'instagram-feed' ), 'mostRecent' => __( 'Most recent', 'instagram-feed' ), 'moderationModePreview' => __( 'Moderation Mode Preview', 'instagram-feed' ), 'notification' => array( 'feedSaved' => array( 'type' => 'success', 'text' => __( 'Feed saved successfully', 'instagram-feed' ) ), 'feedSavedError' => array( 'type' => 'error', 'text' => __( 'Error saving Feed', 'instagram-feed' ) ), 'previewUpdated' => array( 'type' => 'success', 'text' => __( 'Preview updated successfully', 'instagram-feed' ) ), 'carouselLayoutUpdated' => array( 'type' => 'success', 'text' => __( 'Carousel updated successfully', 'instagram-feed' ) ), 'unkownError' => array( 'type' => 'error', 'text' => __( 'Unknown error occurred', 'instagram-feed' ) ), 'cacheCleared' => array( 'type' => 'success', 'text' => __( 'Feed cache cleared', 'instagram-feed' ) ), 'selectSourceError' => array( 'type' => 'error', 'text' => __( 'Please select a source for your feed', 'instagram-feed' ) ), 'commentCacheCleared' => array( 'type' => 'success', 'text' => __( 'Comment cache cleared', 'instagram-feed' ) ), ), 'install' => __( 'Install', 'instagram-feed' ), 'installed' => __( 'Installed', 'instagram-feed' ), 'activate' => __( 'Activate', 'instagram-feed' ), 'installedAndActivated' => __( 'Installed & Activated', 'instagram-feed' ), 'free' => __( 'Free', 'instagram-feed' ), 'invalidLicenseKey' => __( 'Invalid license key', 'instagram-feed' ), 'licenseActivated' => __( 'License activated', 'instagram-feed' ), 'licenseDeactivated' => __( 'License Deactivated', 'instagram-feed' ), 'carouselLayoutUpdated'=> array( 'type' => 'success', 'text' => __( 'Carousel Layout updated', 'instagram-feed' ) ), 'getMoreFeatures' => __( 'Get more features with Instagram Feed Pro', 'instagram-feed' ), 'liteFeedUsers' => __( 'Lite users get 50% OFF', 'instagram-feed' ), 'tryDemo' => __( 'Try Demo', 'instagram-feed' ), 'displayImagesVideos' => __( 'Display images and videos in posts', 'instagram-feed' ), 'viewLikesShares' => __( 'View likes, shares and comments', 'instagram-feed' ), 'allFeedTypes' => __( 'All Feed Types: Photos, Albums, Events and more', 'instagram-feed' ), 'abilityToLoad' => __( 'Ability to “Load More” posts', 'instagram-feed' ), 'ctaHashtag' => __( 'Display Hashtag Feeds', 'instagram-feed' ), 'ctaLayout' => __( 'Carousel, Masonry, & Highlight layouts', 'instagram-feed' ), 'ctaPopups' => __( 'View posts in a
 pop-up lightbox', 'instagram-feed' ), 'ctaFilter' => __( 'Powerful post filtering and moderation', 'instagram-feed' ), 'andMuchMore' => __( 'And Much More!', 'instagram-feed' ), 'sbiFreeCTAFeatures' => array( __( 'Create shoppable feeds', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( 'Display likes, captions & comments', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Play videos in your feed', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Display tagged posts', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), __( 'Fast, friendly, and effective support', 'instagram-feed' ), ), 'ctaShowFeatures' => __( 'Show Features', 'instagram-feed' ), 'ctaHideFeatures' => __( 'Hide Features', 'instagram-feed' ), 'upgradeToPro' => __( 'Upgrade to Pro', 'instagram-feed' ), 'redirectLoading' => array( 'heading' => __( 'Redirecting to connect.smashballoon.com', 'instagram-feed' ), 'description' => __( 'You will be redirected to our app so you can connect your account in 5 seconds', 'instagram-feed' ), ), ); } /** * Select Source Screen Text * * @return array * * @since 4.0 */ public static function select_source_screen_text() { return array( 'mainHeading' => __( 'Select one or more sources', 'instagram-feed' ), 'description' => __( 'Sources are Instagram accounts your feed will display content from', 'instagram-feed' ), 'emptySourceDescription' => __( 'Looks like you have not added any source.
Use “Add Source” to add a new one.', 'instagram-feed' ), 'mainHashtagHeading' => __( 'Enter Public Hashtags', 'instagram-feed' ), 'hashtagDescription' => __( 'Add one or more hashtag separated by comma', 'instagram-feed' ), 'hashtagGetBy' => __( 'Fetch posts that are', 'instagram-feed' ), 'sourcesListPopup' => array( 'user' => array( 'mainHeading' => __( 'Add a source for Timeline', 'instagram-feed' ), 'description' => __( 'Select or add an account you want to display the timeline for', 'instagram-feed' ), ), 'tagged' => array( 'mainHeading' => __( 'Add a source for Mentions', 'instagram-feed' ), 'description' => __( 'Select or add an account you want to display the mentions for', 'instagram-feed' ), ) ), 'perosnalAccountToolTipTxt' => array( __( 'Due to changes in Instagram’s new API, we can no
longer get mentions for personal accounts. To
enable this for your account, you will need to convert it to
a Business account. Learn More', 'instagram-feed' ), ), 'groupsToolTip' => array( __( 'Due to Facebook limitations, it\'s not possible to display photo feeds from a Group, only a Page.', 'instagram-feed' ) ), 'updateHeading' => __( 'Update Source', 'instagram-feed' ), 'updateDescription' => __( 'Select a source from your connected Facebook Pages and Groups. Or, use "Add New" to connect a new one.', 'instagram-feed' ), 'updateFooter' => __( 'Add multiple Facebook Pages or Groups to a feed with our Multifeed extension', 'instagram-feed' ), 'noSources' => __( 'Please add a source in order to display a feed. Go to the "Settings" tab -> "Sources" section -> Click "Add New" to connect a source.', 'instagram-feed' ), 'multipleTypes' => array( 'user' => [ 'heading' => __( 'User Timeline', 'instagram-feed' ), 'icon' => 'user', 'description' => __( 'Connect an account to show posts for it.', 'instagram-feed' ), 'actionType' => 'addSource' ], 'hashtag' => [ 'heading' => __( 'Hashtag', 'instagram-feed' ), 'icon' => 'hashtag', 'description' => __( 'Add one or more hashtag separated by comma.', 'instagram-feed' ), 'businessRequired' => true, 'actionType' => 'inputHashtags' ], 'tagged' => [ 'heading' => __( 'Tagged', 'instagram-feed' ), 'icon' => 'mention', 'description' => __( 'Connect an account to show tagged posts. This does not give us any permission to manage your Instagram account.', 'instagram-feed' ), 'businessRequired' => true, 'actionType' => 'addSource' ] ), 'modal' => array( 'addNew' => __( 'Connect your Instagram Account', 'instagram-feed' ), 'selectSourceType' => __( 'Select Account Type', 'instagram-feed' ), 'connectAccount' => __( 'Connect an Instagram Account', 'instagram-feed' ), 'connectAccountDescription' => __( 'This does not give us permission to manage your Instagram account, it simply allows the plugin to see a list of them and retrieve their public content from the API.', 'instagram-feed' ), 'connect' => __( 'Connect', 'instagram-feed' ), 'enterEventToken' => __( 'Enter Events Access Token', 'instagram-feed' ), 'enterEventTokenDescription' => sprintf( __( 'Due to restrictions by Facebook, you need to create a Facebook app and then paste that app Access Token here. We have a guide to help you with just that, which you can read %shere%s', 'instagram-feed' ), '', '' ), 'alreadyHave' => __( 'Already have a API Token and Access Key for your account?', 'instagram-feed' ), 'addManuallyLink' => __( 'Add Account Manually', 'instagram-feed' ), 'selectAccount' => __( 'Select an Instagram Account', 'instagram-feed' ), 'showing' => __( 'Showing', 'instagram-feed' ), 'facebook' => __( 'Facebook', 'instagram-feed' ), 'businesses' => __( 'Businesses', 'instagram-feed' ), 'groups' => __( 'Groups', 'instagram-feed' ), 'connectedTo' => __( 'connected to', 'instagram-feed' ), 'addManually' => __( 'Add a Source Manually', 'instagram-feed' ), 'addSource' => __( 'Add Source', 'instagram-feed' ), 'sourceType' => __( 'Source Type', 'instagram-feed' ), 'accountID' => __( 'Instagram Account ID', 'instagram-feed' ), 'fAccountID' => __( 'Instagram Account ID', 'instagram-feed' ), 'eventAccessToken' => __( 'Event Access Token', 'instagram-feed' ), 'enterID' => __( 'Enter ID', 'instagram-feed' ), 'accessToken' => __( 'Instagram Access Token', 'instagram-feed' ), 'enterToken' => __( 'Enter Token', 'instagram-feed' ), 'addApp' => __( 'Add Instagram App to your group', 'instagram-feed' ), 'addAppDetails' => __( 'To get posts from your group, Instagram requires the "Smash Balloon Plugin" app to be added in your group settings. Just follow the directions here:', 'instagram-feed' ), 'addAppSteps' => [ __( 'Go to your group settings page by ', 'instagram-feed' ), sprintf( __( 'Search for "Smash Balloon" and select our app %s(see screenshot)%s', 'instagram-feed' ), '', 'Thumbnail Layout'), __( 'Click "Add" and you are done.', 'instagram-feed' ) ], 'alreadyExists' => __( 'Account already exists', 'instagram-feed' ), 'alreadyExistsExplanation' => __( 'The Instagram account you added is already connected as a “Business” account. Would you like to replace it with a “Personal“ account? (Note: Personal accounts cannot be used to display Mentions or Hashtag feeds.)', 'instagram-feed' ), 'replaceWithPersonal' => __( 'Replace with Personal', 'instagram-feed' ), 'notAdmin' => __( 'For groups you are not an administrator of', 'instagram-feed' ), 'disclaimerMentions' => __( 'Due to Instagram’s limitations, you need to connect a business account to display a Mentions timeline', 'instagram-feed' ), 'disclaimerHashtag' => __( 'Due to Instagram’s limitations, you need to connect a business account to display a Hashtag feed', 'instagram-feed' ), 'notSureToolTip' => __( 'Select "Personal" if displaying a regular feed of posts, as this can display feeds from either a Personal or Business account. For displaying a Hashtag or Tagged feed, you must have an Instagram Business account. If needed, you can convert a Personal account into a Business account by following the directions {link}here{link}.', 'instagram-feed' ) ), 'footer' => array( 'heading' => __( 'Add feeds for popular social platforms with our other plugins', 'instagram-feed' ), ), 'personal' => __( 'Personal', 'instagram-feed' ), 'business' => __( 'Business', 'instagram-feed' ), 'notSure' => __( "I'm not sure", 'instagram-feed' ), ); } /** * For Other Platforms listed on the footer widget * * @return array * * @since 6.0 */ public static function builder_svg_icons() { $builder_svg_icons = [ 'youtube' => '', 'twitter' => '', 'instagram' => '', 'facebook' => '', 'smash' => '', 'tag' => '', 'copy' => '', 'duplicate' => '', 'edit' => '', 'delete' => '', 'checkmark' => '', 'checkmarklarge'=> '', 'information' => '', 'cog' => '', 'angleUp' => '', 'user_check' => '', 'users' => '', 'info' => '', 'list' => '', 'grid' => '', 'masonry' => '', 'carousel' => '', 'highlight' => '', 'desktop' => '', 'tablet' => '', 'mobile' => '', 'feed_layout' => '', 'color_scheme' => '', 'header' => '', 'article' => '', 'article_2' => '', 'like_box' => '', 'load_more' => '', 'lightbox' => '', 'source' => '', 'filter' => '', 'update' => '', 'sun' => '', 'moon' => '', 'visual' => '', 'text' => '', 'background' => '', 'cursor' => '', 'link' => '', 'thumbnail' => '', 'halfwidth' => '', 'fullwidth' => '', 'boxed' => '', 'corner' => '', 'preview' => '', 'flag' => '', 'copy2' => '', 'timelineIcon' => ' ', 'photosIcon' => ' ', 'videosIcon' => ' ', 'albumsIcon' => ' ', 'eventsIcon' => ' ', 'reviewsIcon' => ' ', 'featuredpostIcon' => ' ', 'singlealbumIcon' => ' ', 'socialwallIcon' => ' ', 'addPage' => '', 'addWidget' => '', 'plus' => '', 'eye1' => '', 'eyePreview' => '', 'facebookShare' => '', 'twitterShare' => '', 'linkedinShare' => '', 'mailShare' => '', 'successNotification' => '', 'errorNotification' => '', 'messageNotification' => '', 'albumsPreview' => ' ', 'featuredPostPreview' => ' ', 'issueSinglePreview' => ' ', 'playButton' => '', 'spinner' => '', 'rocket' => '', 'follow' => '', 'picture' => '', 'caption' => '', 'heart' => '', 'sort' => '', 'shop' => '', 'headerUser' => '', 'headerPhoto' => '', 'imageChooser' => '', 'usertimelineIcon' => ' ', 'publichashtagIcon' => ' ', 'taggedpostsIcon' => ' ', 'socialwall1Icon' => ' ', 'publichashtagIconFree' => '', 'taggedpostsIconFree' => '', 'socialwall1IconFree' => ' ', 'user' => '', 'hashtag' => '', 'mention' => '', 'tooltipHelpSvg' => '', 'shoppableDisabled' => ' ', 'shoppableEnabled' => ' ', 'ctaBoxes' => array( 'hashtag' => '', 'layout' => '', 'popups' => '', 'filter' => '' ), ]; return $builder_svg_icons; } public static function sb_other_plugins_modal() { check_ajax_referer( 'sbi_nonce' , 'sbi_nonce'); if ( ! current_user_can( 'activate_plugins' ) || ! current_user_can( 'install_plugins' ) ) { wp_send_json_error(); } $plugin = isset( $_POST['plugin'] ) ? sanitize_key( $_POST['plugin'] ) : ''; $sb_other_plugins = self::install_plugins_popup(); $plugin = isset( $sb_other_plugins[ $plugin ] ) ? $sb_other_plugins[ $plugin ] : false; if ( ! $plugin ) { wp_send_json_error(); } // Build the content for modals $output = '
'. $plugin['svgIcon'] .'

'. $plugin['name'] .'Free

'. $plugin['author'] .'

'. $plugin['description'] .'

'; $plugin_install_data = array( 'step' => 'install', 'action' => 'sbi_install_addon', 'nonce' => wp_create_nonce('sbi-admin'), 'plugin' => $plugin['plugin'], 'download_plugin' => $plugin['download_plugin'], ); if ( ! $plugin['installed'] ) { $output .= sprintf( "
", sbi_json_encode( $plugin_install_data ), __('Install', 'instagram-feed') ); } if ( $plugin['installed'] && ! $plugin['activated'] ) { $plugin_install_data['step'] = 'activate'; $plugin_install_data['action'] = 'sbi_activate_addon'; $output .= sprintf( "", sbi_json_encode( $plugin_install_data ), __('Activate', 'instagram-feed') ); } if ( $plugin['installed'] && $plugin['activated'] ) { $output .= sprintf( "", __('Plugin installed & activated', 'instagram-feed') ); } new \InstagramFeed\SBI_Response( true, array( 'output' => $output ) ); } /** * Plugins information for plugin install modal in all feeds page on select source flow * * @since 6.0 * * @return array */ public static function install_plugins_popup() { // get the WordPress's core list of installed plugins if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $installed_plugins = get_plugins(); $is_facebook_installed = false; $facebook_plugin = 'custom-facebook-feed/custom-facebook-feed.php'; if ( isset( $installed_plugins['custom-facebook-feed-pro/custom-facebook-feed.php'] ) ) { $is_facebook_installed = true; $facebook_plugin = 'custom-facebook-feed/custom-facebook-feed.php'; } else if ( isset( $installed_plugins['custom-facebook-feed/custom-facebook-feed.php'] ) ) { $is_facebook_installed = true; } $is_twitter_installed = false; $twitter_plugin = 'custom-twitter-feeds/custom-twitter-feed.php'; if ( isset( $installed_plugins['custom-twitter-feeds-pro/custom-twitter-feed.php'] ) ) { $is_twitter_installed = true; $twitter_plugin = 'custom-twitter-feeds-pro/custom-twitter-feed.php'; } else if ( isset( $installed_plugins['custom-twitter-feeds/custom-twitter-feed.php'] ) ) { $is_twitter_installed = true; } $is_youtube_installed = false; $youtube_plugin = 'feeds-for-youtube/youtube-feed.php'; if ( isset( $installed_plugins['youtube-feed-pro/youtube-feed.php'] ) ) { $is_youtube_installed = true; $youtube_plugin = 'youtube-feed-pro/youtube-feed.php'; } else if ( isset( $installed_plugins['feeds-for-youtube/youtube-feed.php'] ) ) { $is_youtube_installed = true; } return array( 'facebook' => array( 'displayName' => __( 'Facebook', 'instagram-feed' ), 'name' => __( 'Facebook Feed', 'instagram-feed' ), 'author' => __( 'By Smash Balloon', 'instagram-feed' ), 'description' => __('To display a Facebook feed, our Facebook plugin is required.
It provides a clean and beautiful way to add your Facebook posts to your website. Grab your visitors attention and keep them engaged with your site longer.', 'instagram-feed'), 'dashboard_permalink' => admin_url( 'admin.php?page=cff-feed-builder' ), 'svgIcon' => '', 'installed' => $is_facebook_installed, 'activated' => is_plugin_active( $facebook_plugin ), 'plugin' => $facebook_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/custom-facebook-feed.zip', ), 'twitter' => array( 'displayName' => __( 'Twitter', 'instagram-feed' ), 'name' => __( 'Twitter Feed', 'instagram-feed' ), 'author' => __( 'By Smash Balloon', 'instagram-feed' ), 'description' => __('Custom Twitter Feeds is a highly customizable way to display tweets from your Twitter account. Promote your latest content and update your site content automatically.', 'instagram-feed'), 'dashboard_permalink' => admin_url( 'admin.php?page=custom-twitter-feeds' ), 'svgIcon' => '', 'installed' => $is_twitter_installed, 'activated' => is_plugin_active( $twitter_plugin ), 'plugin' => $twitter_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/custom-twitter-feeds.zip', ), 'youtube' => array( 'displayName' => __( 'YouTube', 'instagram-feed' ), 'name' => __( 'Feeds for YouTube', 'instagram-feed' ), 'author' => __( 'By Smash Balloon', 'instagram-feed' ), 'description' => __( 'To display a YouTube feed, our YouTube plugin is required. It provides a simple yet powerful way to display videos from YouTube on your website, Increasing engagement with your channel while keeping visitors on your website.', 'instagram-feed' ), 'dashboard_permalink' => admin_url( 'admin.php?page=youtube-feed' ), 'svgIcon' => '', 'installed' => $is_youtube_installed, 'activated' => is_plugin_active( $youtube_plugin ), 'plugin' => $youtube_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/feeds-for-youtube.zip', ), ); } /** * Gets a list of info * Used in multiple places in the feed creator * Other Platforms + Social Links * Upgrade links * * @return array * * @since 6.0 */ public static function get_smashballoon_info() { $smash_info = [ 'colorSchemes' => [ 'facebook' => '#006BFA', 'twitter' => '#1B90EF', 'instagram' => '#BA03A7', 'youtube' => '#EB2121', 'linkedin' => '#007bb6', 'mail' => '#666', 'smash' => '#EB2121' ], 'upgrade' => [ 'name' => __( 'Upgrade to Pro', 'instagram-feed' ), 'icon' => 'instagram', 'link' => 'https://smashballoon.com/instagram-feed/' ], 'platforms' => [ [ 'name' => __( 'Facebook Feed', 'instagram-feed' ), 'icon' => 'facebook', 'link' => 'https://smashballoon.com/custom-facebook-feed/?utm_campaign=instagram-free&utm_source=balloon&utm_medium=facebook' ], [ 'name' => __( 'Twitter Feed', 'instagram-feed' ), 'icon' => 'twitter', 'link' => 'https://smashballoon.com/custom-twitter-feeds/?utm_campaign=instagram-free&utm_source=balloon&utm_medium=twitter' ], [ 'name' => __( 'YouTube Feed', 'instagram-feed' ), 'icon' => 'youtube', 'link' => 'https://smashballoon.com/youtube-feed/?utm_campaign=instagram-free&utm_source=balloon&utm_medium=youtube' ], [ 'name' => __( 'Social Wall Plugin', 'instagram-feed' ), 'icon' => 'smash', 'link' => 'https://smashballoon.com/social-wall/?utm_campaign=instagram-free&utm_source=balloon&utm_medium=social-wall ', ] ], 'socialProfiles' => array( 'facebook' => 'https://www.facebook.com/SmashBalloon/', 'twitter' => 'https://twitter.com/smashballoon', ), 'morePlatforms' => ['instagram','youtube','twitter'] ]; return $smash_info; } /** * Text specific to onboarding. Will return an associative array 'active' => false * if onboarding has been dismissed for the user or there aren't any legacy feeds. * * @return array * * @since 4.0 */ public function get_onboarding_text() { // TODO: return if no legacy feeds $sbi_statuses_option = get_option( 'sbi_statuses', array() ); if ( ! isset( $sbi_statuses_option['legacy_onboarding'] ) ) { return array( 'active' => false ); } if ( $sbi_statuses_option['legacy_onboarding']['active'] === false || self::onboarding_status() === 'dismissed' ) { return array( 'active' => false ); } $type = $sbi_statuses_option['legacy_onboarding']['type']; $text = array( 'active' => true, 'type' => $type, 'legacyFeeds' => array( 'heading' => __( 'Legacy Feed Settings', 'instagram-feed' ), 'description' => sprintf( __( 'These settings will impact %s legacy feeds on your site. You can learn more about what legacy feeds are and how they differ from new feeds %shere%s.', 'instagram-feed' ), '', '', '' ), ), 'getStarted' => __( 'You can now create and customize feeds individually. Click "Add New" to get started.', 'instagram-feed' ), ); if ($type === 'single') { $text['tooltips'] = array( array( 'step' => 1, 'heading' => __( 'How you create a feed has changed', 'instagram-feed' ), 'p' => __( 'You can now create and customize feeds individually without using shortcode options.', 'instagram-feed' ) . ' ' . __( 'Click "Add New" to get started.', 'instagram-feed' ), 'pointer' => 'top' ), array( 'step' => 2, 'heading' => __( 'Your existing feed is here', 'instagram-feed' ), 'p' => __( 'You can edit your existing feed from here, and all changes will only apply to this feed.', 'instagram-feed' ), 'pointer' => 'top' ) ); } else { $text['tooltips'] = array( array( 'step' => 1, 'heading' => __( 'How you create a feed has changed', 'instagram-feed' ), 'p' => __( 'You can now create and customize feeds individually without using shortcode options.', 'instagram-feed' ) . ' ' . __( 'Click "Add New" to get started.', 'instagram-feed' ), 'pointer' => 'top' ), array( 'step' => 2, 'heading' => __( 'Your existing feeds are under "Legacy" feeds', 'instagram-feed' ), 'p' => __( 'You can edit the settings for any existing "legacy" feed (i.e. any feed created prior to this update) here.', 'instagram-feed' ) . ' ' . __( 'This works just like the old settings page and affects all legacy feeds on your site.', 'instagram-feed' ) ), array( 'step' => 3, 'heading' => __( 'Existing feeds work as normal', 'instagram-feed' ), 'p' => __( 'You don\'t need to update or change any of your existing feeds. They will continue to work as usual.', 'instagram-feed' ) . ' ' . __( 'This update only affects how new feeds are created and customized.', 'instagram-feed' ) ) ); } return $text; } public function get_customizer_onboarding_text() { if ( self::onboarding_status( 'customizer' ) === 'dismissed' ) { return array( 'active' => false ); } $text = array( 'active' => true, 'type' => 'customizer', 'tooltips' => array( array( 'step' => 1, 'heading' => __( 'Embedding a Feed', 'instagram-feed' ), 'p' => __( 'After you are done customizing the feed, click here to add it to a page or a widget.', 'instagram-feed' ), 'pointer' => 'top' ), array( 'step' => 2, 'heading' => __( 'Customize', 'instagram-feed' ), 'p' => __( 'Change your feed layout, color scheme, or customize individual feed sections here.', 'instagram-feed' ), 'pointer' => 'top' ), array( 'step' => 3, 'heading' => __( 'Settings', 'instagram-feed' ), 'p' => __( 'Update your feed source, filter your posts, or change advanced settings here.', 'instagram-feed' ), 'pointer' => 'top' ) ) ); return $text; } /** * Text related to the feed customizer * * @return array * * @since 6.0 */ public function get_customize_screens_text() { $text = [ 'common' => [ 'preview' => __( 'Preview', 'instagram-feed' ), 'help' => __( 'Help', 'instagram-feed' ), 'embed' => __( 'Embed', 'instagram-feed' ), 'save' => __( 'Save', 'instagram-feed' ), 'sections' => __( 'Sections', 'instagram-feed' ), 'enable' => __( 'Enable', 'instagram-feed' ), 'background' => __( 'Background', 'instagram-feed' ), 'text' => __( 'Text', 'instagram-feed' ), 'inherit' => __( 'Inherit from Theme', 'instagram-feed' ), 'size' => __( 'Size', 'instagram-feed' ), 'color' => __( 'Color', 'instagram-feed' ), 'height' => __( 'Height', 'instagram-feed' ), 'placeholder' => __( 'Placeholder', 'instagram-feed' ), 'select' => __( 'Select', 'instagram-feed' ), 'enterText' => __( 'Enter Text', 'instagram-feed' ), 'hoverState' => __( 'Hover State', 'instagram-feed' ), 'sourceCombine' => __( 'Combine sources from multiple platforms using our Social Wall plugin', 'instagram-feed' ), ], 'tabs' => [ 'customize' => __( 'Customize', 'instagram-feed' ), 'settings' => __( 'Settings', 'instagram-feed' ), ], 'overview' => [ 'feedLayout' => __( 'Feed Layout', 'instagram-feed' ), 'colorScheme' => __( 'Color Scheme', 'instagram-feed' ), 'header' => __( 'Header', 'instagram-feed' ), 'posts' => __( 'Posts', 'instagram-feed' ), 'likeBox' => __( 'Like Box', 'instagram-feed' ), 'loadMore' => __( 'Load More Button', 'instagram-feed' ), ], 'feedLayoutScreen' => [ 'layout' => __( 'Layout', 'instagram-feed' ), 'list' => __( 'List', 'instagram-feed' ), 'grid' => __( 'Grid', 'instagram-feed' ), 'masonry' => __( 'Masonry', 'instagram-feed' ), 'carousel' => __( 'Carousel', 'instagram-feed' ), 'feedHeight' => __( 'Feed Height', 'instagram-feed' ), 'number' => __( 'Number of Posts', 'instagram-feed' ), 'columns' => __( 'Columns', 'instagram-feed' ), 'desktop' => __( 'Desktop', 'instagram-feed' ), 'tablet' => __( 'Tablet', 'instagram-feed' ), 'mobile' => __( 'Mobile', 'instagram-feed' ), 'bottomArea' => [ 'heading' => __( 'Tweak Post Styles', 'instagram-feed' ), 'description' => __( 'Change post background, border radius, shadow etc.', 'instagram-feed' ), ] ], 'colorSchemeScreen' => [ 'scheme' => __( 'Scheme', 'instagram-feed' ), 'light' => __( 'Light', 'instagram-feed' ), 'dark' => __( 'Dark', 'instagram-feed' ), 'custom' => __( 'Custom', 'instagram-feed' ), 'customPalette' => __( 'Custom Palette', 'instagram-feed' ), 'background2' => __( 'Background 2', 'instagram-feed' ), 'text2' => __( 'Text 2', 'instagram-feed' ), 'link' => __( 'Link', 'instagram-feed' ), 'bottomArea' => [ 'heading' => __( 'Overrides', 'instagram-feed' ), 'description' => __( 'Colors that have been overridden from individual post element settings will not change. To change them, you will have to reset overrides.', 'instagram-feed' ), 'ctaButton' => __( 'Reset Overrides.', 'instagram-feed' ), ] ], 'headerScreen' => [ 'headerType' => __( 'Header Type', 'instagram-feed' ), 'visual' => __( 'Visual', 'instagram-feed' ), 'coverPhoto' => __( 'Cover Photo', 'instagram-feed' ), 'nameAndAvatar' => __( 'Name and avatar', 'instagram-feed' ), 'about' => __( 'About (bio and Likes)', 'instagram-feed' ), 'displayOutside' => __( 'Display outside scrollable area', 'instagram-feed' ), 'icon' => __( 'Icon', 'instagram-feed' ), 'iconImage' => __( 'Icon Image', 'instagram-feed' ), 'iconColor' => __( 'Icon Color', 'instagram-feed' ), ], // all Lightbox in common // all Load More in common 'likeBoxScreen' => [ 'small' => __( 'Small', 'instagram-feed' ), 'large' => __( 'Large', 'instagram-feed' ), 'coverPhoto' => __( 'Cover Photo', 'instagram-feed' ), 'customWidth' => __( 'Custom Width', 'instagram-feed' ), 'defaultSetTo' => __( 'By default, it is set to auto', 'instagram-feed' ), 'width' => __( 'Width', 'instagram-feed' ), 'customCTA' => __( 'Custom CTA', 'instagram-feed' ), 'customCTADescription' => __( 'This toggles the custom CTA like "Show now" and "Contact"', 'instagram-feed' ), 'showFans' => __( 'Show Fans', 'instagram-feed' ), 'showFansDescription' => __( 'Show visitors which of their friends follow your page', 'instagram-feed' ), 'displayOutside' => __( 'Display outside scrollable area', 'instagram-feed' ), 'displayOutsideDescription' => __( 'Make the like box fixed by moving it outside the scrollable area', 'instagram-feed' ), ], 'postsScreen' => [ 'thumbnail' => __( 'Thumbnail', 'instagram-feed' ), 'half' => __( 'Half width', 'instagram-feed' ), 'full' => __( 'Full width', 'instagram-feed' ), 'useFull' => __( 'Use full width layout when post width is less than 500px', 'instagram-feed' ), 'postStyle' => __( 'Post Style', 'instagram-feed' ), 'editIndividual' => __( 'Edit Individual Elements', 'instagram-feed' ), 'individual' => [ 'description' => __( 'Hide or show individual elements of a post or edit their options', 'instagram-feed' ), 'name' => __( 'Name', 'instagram-feed' ), 'edit' => __( 'Edit', 'instagram-feed' ), 'postAuthor' => __( 'Post Author', 'instagram-feed' ), 'postText' => __( 'Post Text', 'instagram-feed' ), 'date' => __( 'Date', 'instagram-feed' ), 'photosVideos' => __( 'Photos/Videos', 'instagram-feed' ), 'likesShares' => __( 'Likes, Shares and Comments', 'instagram-feed' ), 'eventTitle' => __( 'Event Title', 'instagram-feed' ), 'eventDetails' => __( 'Event Details', 'instagram-feed' ), 'postAction' => __( 'Post Action Links', 'instagram-feed' ), 'sharedPostText' => __( 'Shared Post Text', 'instagram-feed' ), 'sharedLinkBox' => __( 'Shared Link Box', 'instagram-feed' ), 'postTextDescription' => __( 'The main text of the Instagram post', 'instagram-feed' ), 'maxTextLength' => __( 'Maximum Text Length', 'instagram-feed' ), 'characters' => __( 'Characters', 'instagram-feed' ), 'linkText' => __( 'Link text to Instagram post', 'instagram-feed' ), 'postDateDescription' => __( 'The date of the post', 'instagram-feed' ), 'format' => __( 'Format', 'instagram-feed' ), 'custom' => __( 'Custom', 'instagram-feed' ), 'learnMoreFormats' => '' . __( 'Learn more about custom formats', 'instagram-feed' ) . '', 'addTextBefore' => __( 'Add text before date', 'instagram-feed' ), 'addTextBeforeEG' => __( 'E.g. Posted', 'instagram-feed' ), 'addTextAfter' => __( 'Add text after date', 'instagram-feed' ), 'addTextAfterEG' => __( 'E.g. - posted date', 'instagram-feed' ), 'timezone' => __( 'Timezone', 'instagram-feed' ), 'tzDescription' => __( 'Timezone settings are global across all feeds. To update it use the global settings.', 'instagram-feed' ), 'tzCTAText' => __( 'Go to Global Settings', 'instagram-feed' ), 'photosVideosDescription' => __( 'Any photos or videos in your posts', 'instagram-feed' ), 'useOnlyOne' => __( 'Use only one image per post', 'instagram-feed' ), 'postActionLinksDescription' => __( 'The "View on Instagram" and "Share" links at the bottom of each post', 'instagram-feed' ), 'viewOnFBLink' => __( 'View on Instagram link', 'instagram-feed' ), 'viewOnFBLinkDescription' => __( 'Toggle "View on Instagram" link below each post', 'instagram-feed' ), 'customizeText' => __( 'Customize Text', 'instagram-feed' ), 'shareLink' => __( 'Share Link', 'instagram-feed' ), 'shareLinkDescription' => __( 'Toggle "Share" link below each post', 'instagram-feed' ), 'likesSharesDescription' => __( 'The comments box displayed at the bottom of each timeline post', 'instagram-feed' ), 'iconTheme' => __( 'Icon Theme', 'instagram-feed' ), 'auto' => __( 'Auto', 'instagram-feed' ), 'light' => __( 'Light', 'instagram-feed' ), 'dark' => __( 'Dark', 'instagram-feed' ), 'expandComments' => __( 'Expand comments box by default', 'instagram-feed' ), 'hideComment' => __( 'Hide comment avatars', 'instagram-feed' ), 'showLightbox' => __( 'Show comments in lightbox', 'instagram-feed' ), 'eventTitleDescription' => __( 'The title of an event', 'instagram-feed' ), 'eventDetailsDescription' => __( 'The information associated with an event', 'instagram-feed' ), 'textSize' => __( 'Text Size', 'instagram-feed' ), 'textColor' => __( 'Text Color', 'instagram-feed' ), 'sharedLinkBoxDescription' => __( "The link info box that's created when a link is shared in a Instagram post", 'instagram-feed' ), 'boxStyle' => __( 'Box Style', 'instagram-feed' ), 'removeBackground' => __( 'Remove background/border', 'instagram-feed' ), 'linkTitle' => __( 'Link Title', 'instagram-feed' ), 'linkURL' => __( 'Link URL', 'instagram-feed' ), 'linkDescription' => __( 'Link Description', 'instagram-feed' ), 'chars' => __( 'chars', 'instagram-feed' ), 'sharedPostDescription' => __( 'The description text associated with shared photos, videos, or links', 'instagram-feed' ), ], 'postType' => __( 'Post Type', 'instagram-feed' ), 'boxed' => __( 'boxed', 'instagram-feed' ), 'regular' => __( 'Regular', 'instagram-feed' ), 'indvidualProperties' => __( 'Individual Properties', 'instagram-feed' ), 'backgroundColor' => __( 'Background Color', 'instagram-feed' ), 'borderRadius' => __( 'Border Radius', 'instagram-feed' ), 'boxShadow' => __( 'Box Shadow', 'instagram-feed' ), ], 'shoppableFeedScreen' => [ 'heading1' => __( 'Upgrade to Pro and make your Instagram Feed Shoppable', 'instagram-feed' ), 'description1' => __( 'This feature links the post to the one specified in your caption.

Don’t want to add links to the caption? You can add links manually to each post.


', 'instagram-feed' ), 'heading2' => __( 'Tap “Add” or “Update” on an
image to add/update it’s URL', 'instagram-feed' ), ] ]; $text['onboarding'] = $this->get_customizer_onboarding_text(); return $text; } /** * Returns an associate array of all existing sources along with their data * * @param int $page * * @return array * * @since 6.0 */ public static function get_source_list( $page = 1 ) { $args['page'] = $page; $source_data = SBI_Db::source_query( $args ); $encryption = new \SB_Instagram_Data_Encryption(); $return = array(); foreach ( $source_data as $source ) { $info = ! empty( $source['info'] ) ? json_decode( $encryption->decrypt( $source['info'] ), true ) : array(); $source['header_data'] = $info; $settings = [ 'gdpr' => 'no' ]; $avatar = \SB_Instagram_Parse::get_avatar( $info, $settings ); if ( \SB_Instagram_Connected_Account::local_avatar_exists( $source['username'] ) ) { $source['local_avatar_url'] = \SB_Instagram_Connected_Account::get_local_avatar_url( $source['username'] ); $source['local_avatar'] = \SB_Instagram_Connected_Account::get_local_avatar_url( $source['username'] ); } else { $source['local_avatar'] = false; } $source['avatar_url'] = is_bool( $avatar ) ? \SB_Instagram_Parse::get_avatar_url( $info, $settings ) : false; $source['just_added'] = (! empty( $_GET['sbi_username'] ) && isset( $info['username'] ) && $info['username'] === $_GET['sbi_username'] ); $source['error_encryption'] = false; if ( isset( $source['access_token'] ) && strpos( $source['access_token'], 'IG' ) === false && strpos( $source['access_token'], 'EA' ) === false && ! $encryption->decrypt( $source['access_token'] ) ) { $source['error_encryption'] = true; } $return[] = $source; } return $return; } /** * Get Links with UTM * * @return array * * @since 4.0 */ public static function get_links_with_utm() { $license_key = null; if ( get_option('sbi_license_key') ) { $license_key = get_option('sbi_license_key'); } $all_access_bundle = sprintf('https://smashballoon.com/all-access/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=all-feeds&utm_medium=footer-banner&utm_content=learn-more', $license_key); $all_access_bundle_popup = sprintf('https://smashballoon.com/all-access/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=balloon&utm_medium=all-access', $license_key); $sourceCombineCTA = sprintf('https://smashballoon.com/social-wall/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=customizer&utm_medium=sources&utm_content=social-wall', $license_key); return array( 'allAccessBundle' => $all_access_bundle, 'popup' => array( 'allAccessBundle' => $all_access_bundle_popup, 'fbProfile' => 'https://www.facebook.com/SmashBalloon/', 'twitterProfile' => 'https://twitter.com/smashballoon', ), 'sourceCombineCTA' => $sourceCombineCTA, 'multifeedCTA' => 'https://smashballoon.com/extensions/multifeed/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=sources&utm_content=multifeed', 'doc' => 'https://smashballoon.com/docs/instagram/?utm_campaign=instagram-free&utm_source=support&utm_medium=view-documentation-button&utm_content=view-documentation', 'blog' => 'https://smashballoon.com/blog/?utm_campaign=instagram-free&utm_source=support&utm_medium=view-blog-button&utm_content=view-blog', 'gettingStarted' => 'https://smashballoon.com/docs/getting-started/?instagram&utm_campaign=instagram-free&utm_source=support&utm_medium=getting-started-button&utm_content=getting-started', ); } public static function get_social_wall_links() { return array( '' . __( 'All Feeds', 'instagram-feed' ) . '', '' . __( 'Settings', 'instagram-feed' ) . '', '' . __( 'oEmbeds', 'instagram-feed' ) . '', '' . __( 'Extensions', 'instagram-feed' ) . '', '' . __( 'About Us', 'instagram-feed' ) . '', '' . __( 'Support', 'instagram-feed' ) . '', ); } /** * Returns an associate array of all existing feeds along with their data * * @return array * * @since 6.0 */ public static function get_feed_list( $feeds_args = array() ) { if ( ! empty( $_GET['feed_id'] ) ) { return array(); } $feeds_data = SBI_Db::feeds_query( $feeds_args ); $i = 0; foreach ( $feeds_data as $single_feed ) { $args = array( 'feed_id' => '*' . $single_feed['id'], 'html_location' => array( 'content' ), ); $count = \SB_Instagram_Feed_Locator::count( $args ); $content_locations = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); // if this is the last page, add in the header footer and sidebar locations if ( count( $content_locations ) < SBI_Db::RESULTS_PER_PAGE ) { $args = array( 'feed_id' => '*' . $single_feed['id'], 'html_location' => array( 'header', 'footer', 'sidebar' ), 'group_by' => 'html_location' ); $other_locations = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); $locations = array(); $combined_locations = array_merge( $other_locations, $content_locations ); } else { $combined_locations = $content_locations; } foreach ( $combined_locations as $location ) { $page_text = get_the_title( $location['post_id'] ); if ( $location['html_location'] === 'header' ) { $html_location = __( 'Header', 'instagram-feed' ); } elseif ( $location['html_location'] === 'footer' ) { $html_location = __( 'Footer', 'instagram-feed' ); } elseif ( $location['html_location'] === 'sidebar' ) { $html_location = __( 'Sidebar', 'instagram-feed' ); } else { $html_location = __( 'Content', 'instagram-feed' ); } $shortcode_atts = json_decode( $location['shortcode_atts'], true ); $shortcode_atts = is_array( $shortcode_atts ) ? $shortcode_atts : array(); $full_shortcode_string = '[instagram-feed'; foreach ( $shortcode_atts as $key => $value ) { if ( ! empty( $value ) ) { $full_shortcode_string .= ' ' . esc_html( $key ) . '="' . esc_html( $value ) . '"'; } } $full_shortcode_string .= ']'; $locations[] = [ 'link' => esc_url( get_the_permalink( $location['post_id'] ) ), 'page_text' => $page_text, 'html_location' => $html_location, 'shortcode' => $full_shortcode_string ]; } $feeds_data[ $i ]['instance_count'] = $count; $feeds_data[ $i ]['location_summary'] = $locations; $settings = json_decode( $feeds_data[ $i ]['settings'], true ); $settings['feed'] = $single_feed['id']; $instagram_feed_settings = new \SB_Instagram_Settings( $settings, sbi_defaults() ); $feeds_data[ $i ]['settings'] = $instagram_feed_settings->get_settings(); $i++; } return $feeds_data; } /** * Returns an associate array of all existing sources along with their data * * @return array * * @since 4.0 */ public function get_legacy_feed_list() { if ( ! empty( $_GET['feed_id'] ) ) { return array(); } $sbi_statuses = get_option( 'sbi_statuses', array() ); $sources_list = self::get_source_list(); if ( empty( $sbi_statuses['support_legacy_shortcode'] ) ) { return []; } $args = array( 'html_location' => array( 'header', 'footer', 'sidebar', 'content' ), 'group_by' => 'shortcode_atts', 'page' => 1 ); $feeds_data = \SB_Instagram_Feed_Locator::legacy_instagram_feed_locator_query( $args ); if ( empty( $feeds_data ) ) { $args = array( 'html_location' => array( 'header', 'footer', 'sidebar', 'content' ), 'group_by' => 'shortcode_atts', 'page' => 1 ); $feeds_data = \SB_Instagram_Feed_Locator::legacy_instagram_feed_locator_query( $args ); } $feed_saver = new SBI_Feed_Saver( 'legacy' ); $settings = $feed_saver->get_feed_settings(); $default_type = 'timeline'; if ( isset( $settings['feedtype'] ) ) { $default_type = $settings['feedtype']; } elseif ( isset( $settings['type'] ) ) { if ( strpos( $settings['type'], ',' ) === false ) { $default_type = $settings['type']; } } $i = 0; $reindex = false; foreach ( $feeds_data as $single_feed ) { $args = array( 'shortcode_atts' => $single_feed['shortcode_atts'], 'html_location' => array( 'content' ), ); $content_locations = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); $count = \SB_Instagram_Feed_Locator::count( $args ); if ( count( $content_locations ) < SBI_Db::RESULTS_PER_PAGE ) { $args = array( 'feed_id' => $single_feed['feed_id'], 'html_location' => array( 'header', 'footer', 'sidebar' ), 'group_by' => 'html_location' ); $other_locations = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); $combined_locations = array_merge( $other_locations, $content_locations ); } else { $combined_locations = $content_locations; } $locations = array(); foreach ( $combined_locations as $location ) { $page_text = get_the_title( $location['post_id'] ); if ( $location['html_location'] === 'header' ) { $html_location = __( 'Header', 'instagram-feed' ); } elseif ( $location['html_location'] === 'footer' ) { $html_location = __( 'Footer', 'instagram-feed' ); } elseif ( $location['html_location'] === 'sidebar' ) { $html_location = __( 'Sidebar', 'instagram-feed' ); } else { $html_location = __( 'Content', 'instagram-feed' ); } $shortcode_atts = json_decode( $location['shortcode_atts'], true ); $shortcode_atts = is_array( $shortcode_atts ) ? $shortcode_atts : array(); $full_shortcode_string = '[instagram-feed'; foreach ( $shortcode_atts as $key => $value ) { if ( ! empty( $value ) ) { if ( is_array( $value ) ) { $value = implode( ',', $value ); } $full_shortcode_string .= ' ' . esc_html( $key ) . '="' . esc_html( $value ) . '"'; } } $full_shortcode_string .= ']'; $locations[] = [ 'link' => esc_url( get_the_permalink( $location['post_id'] ) ), 'page_text' => $page_text, 'html_location' => $html_location, 'shortcode' => $full_shortcode_string ]; } $shortcode_atts = json_decode( $feeds_data[ $i ]['shortcode_atts'], true ); $shortcode_atts = is_array( $shortcode_atts ) ? $shortcode_atts : array(); $full_shortcode_string = '[instagram-feed'; foreach ( $shortcode_atts as $key => $value ) { if ( ! empty( $value ) ) { if ( is_array( $value ) ) { $value = implode( ',', $value ); } $full_shortcode_string .= ' ' . esc_html( $key ) . '="' . esc_html( $value ) . '"'; } } $full_shortcode_string .= ']'; $feeds_data[ $i ]['shortcode'] = $full_shortcode_string; $feeds_data[ $i ]['instance_count'] = $count; $feeds_data[ $i ]['location_summary'] = $locations; $feeds_data[ $i ]['feed_name'] = self::get_legacy_feed_name($sources_list , $feeds_data[ $i ]['feed_id']); $feeds_data[ $i ]['feed_type'] = $default_type; if ( isset( $shortcode_atts['feedtype'] ) ) { $feeds_data[ $i ]['feed_type'] = $shortcode_atts['feedtype']; } elseif ( isset( $shortcode_atts['type'] ) ) { if ( strpos( $shortcode_atts['type'], ',' ) === false ) { $feeds_data[ $i ]['feed_type'] = $shortcode_atts['type']; } } if ( isset( $feeds_data[ $i ]['id'] ) ) { unset( $feeds_data[ $i ]['id'] ); } if ( isset( $feeds_data[ $i ]['html_location'] ) ) { unset( $feeds_data[ $i ]['html_location'] ); } if ( isset( $feeds_data[ $i ]['last_update'] ) ) { unset( $feeds_data[ $i ]['last_update'] ); } if ( isset( $feeds_data[ $i ]['post_id'] ) ) { unset( $feeds_data[ $i ]['post_id'] ); } if ( ! empty( $shortcode_atts['feed'] ) ) { $reindex = true; unset( $feeds_data[ $i ] ); } if ( isset( $feeds_data[ $i ]['shortcode_atts'] ) ) { unset( $feeds_data[ $i ]['shortcode_atts'] ); } $i++; } if ( $reindex ) { $feeds_data = array_values( $feeds_data ); } // if there were no feeds found in the locator table we still want the legacy settings to be available // if it appears as though they had used version 3.x or under at some point. if ( empty( $feeds_data ) && ! is_array( $sbi_statuses['support_legacy_shortcode'] ) && ( $sbi_statuses['support_legacy_shortcode'] ) ) { $feeds_data = array( array( 'feed_id' => __( 'Legacy Feed', 'instagram-feed' ) . ' ' . __( '(unknown location)', 'instagram-feed' ), 'feed_name' => __( 'Legacy Feed', 'instagram-feed' ) . ' ' . __( '(unknown location)', 'instagram-feed' ), 'shortcode' => '[instagram-feed]', 'feed_type' => '', 'instance_count' => false, 'location_summary' => array() ) ); } return $feeds_data; } public static function get_legacy_feed_name( $sources_list, $source_id ) { foreach ($sources_list as $source) { if($source['account_id'] == $source_id){ return $source['username']; } } return $source_id; } /** * Status of the onboarding sequence for specific user * * @return string|boolean * * @since 6.0 */ public static function onboarding_status( $type = 'newuser' ) { $onboarding_statuses = get_user_meta( get_current_user_id(), 'sbi_onboarding', true ); $status = false; if ( ! empty( $onboarding_statuses ) ) { $statuses = maybe_unserialize( $onboarding_statuses ); $status = isset( $statuses[ $type ] ) ? $statuses[ $type ] : false; } return $status; } /** * Update status of onboarding sequence for specific user * * @return string|boolean * * @since 6.0 */ public static function update_onboarding_meta( $value, $type = 'newuser' ) { $onboarding_statuses = get_user_meta( get_current_user_id(), 'sbi_onboarding', true ); if ( ! empty( $onboarding_statuses ) ) { $statuses = maybe_unserialize( $onboarding_statuses ); $statuses[ $type ] = $value; } else { $statuses = array( $type => $value ); } $statuses = maybe_serialize( $statuses ); update_user_meta( get_current_user_id(), 'sbi_onboarding', $statuses ); } /** * Used to dismiss onboarding using AJAX * * @since 6.0 */ public static function after_dismiss_onboarding() { $cap = current_user_can( 'manage_instagram_feed_options' ) ? 'manage_instagram_feed_options' : 'manage_options'; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); if ( current_user_can( $cap ) ) { $type = 'newuser'; if ( isset( $_POST['was_active'] ) ) { $type = sanitize_key( $_POST['was_active'] ); } SBI_Feed_Builder::update_onboarding_meta( 'dismissed', $type ); } wp_die(); } public static function add_customizer_att( $atts ) { if ( ! is_array( $atts ) ) { $atts = []; } $atts['feedtype'] = 'customizer'; return $atts; } /** * Feed Builder Wrapper. * * @since 6.0 */ public function feed_builder(){ include_once SBI_BUILDER_DIR . 'templates/builder.php'; } /** * For types listed on the top of the select feed type screen * * @return array * * @since 6.0 */ public function get_feed_types() { $feed_types = array( array( 'type' => 'user', 'title'=> __( 'User Timeline', 'instagram-feed' ), 'description'=> __( 'Fetch posts from your
 Instagram profile', 'instagram-feed' ), 'icon' => 'usertimelineIcon' ), /* array( 'type' => 'hashtag', 'title' => __( 'Public Hashtag', 'instagram-feed' ), 'description' => __( 'Fetch posts from a public Instagram hashtag', 'instagram-feed' ), 'tooltip' => __( 'Hashtag feeds require a connected Instagram business account', 'instagram-feed' ), 'businessRequired' => true, 'icon' => 'publichashtagIcon' ), array( 'type' => 'tagged', 'title' => __( 'Tagged Posts', 'instagram-feed' ), 'description' => __( 'Display posts your Instagram account has been tagged in', 'instagram-feed' ), 'tooltip' => __( 'Tagged posts feeds require a connected Instagram business account', 'instagram-feed' ), 'businessRequired' => true, 'icon' => 'taggedpostsIcon' ), array( 'type' => 'socialwall', 'title' => __( 'Social Wall', 'instagram-feed' ) . '', 'description' => __( 'Create a feed with sources from different social platforms', 'instagram-feed' ), 'icon' => 'socialwall1Icon' ) */ ); return $feed_types; } /** * For types listed on the bottom of the select feed type screen * * @return array * * @since 6.0 */ public function get_advanced_feed_types() { $feed_types = array( array( 'type' => 'hashtag', 'title' => __( 'Public Hashtag', 'instagram-feed' ), 'description' => __( 'Fetch posts from a public Instagram hashtag', 'instagram-feed' ), 'tooltip' => __( 'Hashtag feeds require a connected Instagram business account', 'instagram-feed' ), 'businessRequired' => true, 'icon' => 'publichashtagIcon' ), array( 'type' => 'tagged', 'title' => __( 'Tagged Posts', 'instagram-feed' ), 'description' => __( 'Display posts your Instagram account has been tagged in', 'instagram-feed' ), 'tooltip' => __( 'Tagged posts feeds require a connected Instagram business account', 'instagram-feed' ), 'businessRequired' => true, 'icon' => 'taggedpostsIcon' ), array( 'type' => 'socialwall', 'title' => __( 'Social Wall', 'instagram-feed' ), 'description' => __( 'Create a feed with sources from different social platforms', 'instagram-feed' ), 'icon' => 'socialwall1Icon' ) ); return $feed_types; } } Salamandra a Agua TROIA - i9kasa

253 107 437

Salamandra a Agua TROIA

Referência: Z0603-0187

4,569.90

Comparar

Partilhar

Descrição

Salamandra TROIA

Salamandra de Pellets a Água para aquecimento central. Com uma potência térmica nominal de 26,3kW, a solução ideal para o conforto da sua casa.
Disponível nas versões
– Painel em Aço (Preto)
Incluí Módulo Hidráulico, composto por: Bomba Circuladora Eletrónica, Vaso de Expansão, Válvula de segurança, Purgador e Manómetro.
Recomendações à Instalação: Válvula Anti-Condensação e Chaminé em Aço-Inox AISI 316L.
Nota: após a boa receção do equipamento pelo cliente, o vidro fica excluído de garantia.

PRINCIPAIS CARACTERÍSTICAS


• Potência Térmica Nominal (kW): 26,3
• Potência Térmica Água (kW): 21,15
• Potência Térmica por Convenção e Radiação (kW): 3,5
• Rendimento (%): 91
• Consumo Mínimo – Máximo (kg/h): 2,4 – 5,5
• Consumo Elétrico (W): 115
• Volume de Água do Corpo (L): 28
• Capacidade do Depósito (kg): 36
• Tiragem Mínima da Chaminé (Pa): 12
• Pressão de Trabalho (bar): 1,5 (máximo: 3bar)
• Diâmetro da Chaminé (mm): 100
• Alim. Elétrica (V/Hz): 230/50
• Sistema de limpeza automática do queimador
• Combustível: Pellet Ø6mm/~30mm (PCI=4560kcal/kg)

ESPECIFICAÇÕES TÉCNICAS