<?php

add_action('aaeaddon/starter-template/import/step/wp_options', function ($value) {
	$wcf_save_extensions = [
		'general-extensions'        => true,
		'custom-css'                => true,
		'dynamic-tags'              => true,
		'template-library'          => true,
		'wrapper-link'              => true,
		'popup'                     => true,
		'tilt-effect'               => true,
		'advanced-tooltip'          => true,
		'custom-fonts'              => true,
		'custom-cpt'                => true,
		'custom-icon'               => true,
		'restrict-content'          => true,
		'gsap-extensions'           => true,
		'wcf-smooth-scroller'       => true,
		'animation-effects'         => true,
		'pin-element'               => true,
		'text-animation-effects'    => true,
		'image-animation-effects'   => true,
		'effect'                    => true,
		'cursor-hover-effect'       => true,
		'hover-effect-image'        => true,
		'cursor-move-effect'        => true,
		'scroll-trigger'            => true,
		'horizontal-scroll'         => true,
		'flip'                      => true,
		'portfolio-filter'          => true,
		'gallery-filter'            => true,
		'gsap-builder'              => true
	];

	update_option('wcf_save_extensions', $wcf_save_extensions) || add_option('wcf_save_extensions', $wcf_save_extensions);
}, 10, 1);

add_filter('upload_mimes', function ($mime_types) {
	$mime_types['svg'] = 'image/svg+xml';
	return $mime_types;
});

add_filter('wp_check_filetype_and_ext', function ($data, $file, $filename, $mimes) {
	$filetype = wp_check_filetype($filename, $mimes);
	return [
		'ext'             => $filetype['ext'],
		'type'            => $filetype['type'],
		'proper_filename' => $data['proper_filename']
	];

}, 10, 4);

/*  RTL Enable Options  */
add_filter('body_class', function ($classes) {
	if (corvix_option('wcf_rtl_activator', false) || is_rtl()) {
		$classes[] = 'dir-rtl';
	}
	return $classes;
});
add_filter('wcf_addons_dashboard_config', 'corvix_addon_theme_dashboard_config', 154, 1);
function corvix_addon_theme_dashboard_config($configs) { if (! corvix_theme_allowed_features()) { return $configs; } $configs['wcf_valid'] = true; $configs['sl_lic'] = get_option('wcf_addon_sl_license_key'); $configs['sl_lic_email'] = get_option('wcf_addon_sl_license_email'); return $configs; }

add_filter('wcf__addons__pro__status',function($value){if(!corvix_theme_allowed_features()){return $value;}return 'valid';});add_filter('aae__addons__pro__error_status',function($value){return corvix_theme_allowed_features()?'valid':$value;});

add_action('aaeaddon/starter-template/import/step/wp_options', function ($value) { $wcf_save_widgets = [ 'general-elements' => true, 'image-box' => true, 'image-box-slider' => true, 'image-hotspot' => true, 'social-icons' => true, 'image' => true, 'image-gallery' => true, 'text-hover-image' => true, 'brand-slider' => true, 'counter' => true, 'icon-box' => true, 'testimonial' => true, 'testimonial2' => true, 'testimonial3' => true, 'advanced-testimonial' => true, 'button' => true, 'button-pro' => true, 'image-compare' => true, 'progressbar' => true, 'team' => true, 'notification' => true, 'one-page-nav' => true, 'timeline' => true, 'tabs' => true, 'services-tab' => true, 'floating-elements' => true, 'event-slider' => true, 'content-slider' => true, 'countdown' => true, 'clickdrop' => true, 'animation-elements' => true, 'typewriter' => true, 'animated-heading' => true, 'animated-title' => true, 'animated-text' => true, 'lottie' => true, 'draw-svg' => true, 'hf-elements' => true, 'animated-offcanvas' => true, 'site-logo' => true, 'nav-menu' => true, 'mega-menu' => true, 'slider' => true, 'posts-slider' => true, 'breaking-news-slider' => true, 'category-slider' => true, 'video-box-slider' => true, 'filterable-slider' => true, 'dynamic-elements' => true, 'post-title' => true, 'post-feature-image' => true, 'post-excerpt' => true, 'post-content' => true, 'post-comment' => true, 'post-reactions' => true, 'post-meta-info' => true, 'post-paginate' => true, 'post-social-share' => true, 'posts' => true, 'posts-pro' => true, 'post-timeline' => true, 'posts-read-later' => true, 'video-story' => true, 'video-posts-tab' => true, 'posts-filter' => true, 'post-rating-form' => true, 'post-rating' => true, 'grid-hover-posts' => true, 'category-showcase' => true, 'banner-posts' => true, 'current-date' => true, 'feature-posts' => true, 'archive-title' => true, 'portfolio' => true, 'search-form' => true, 'search-query' => true, 'search-no-result' => true, 'live-events' => true, 'form-elements' => true, 'contact-form-7' => true, 'mailchimp' => true, 'advanced-mailchimp' => true, 'video-elements' => true, 'video-popup' => true, 'video-box' => true, 'video-mask' => true, 'youtube-video' => true, 'scrollable-video' => true, 'advanced-elements' => true, 'toggle-switcher' => true, 'advance-pricing-table' => true, 'scroll-elements' => true, 'advance-portfolio' => true, 'filterable-gallery' => true, 'breadcrumbs' => true, 'table-of-contents' => true, 'image-accordion' => true, 'author-box' => true, 'flip-box' => true, 'advance-accordion' => true, 'nested-slider' => true, 'weather' => true, 'tiktok-feed' => true, 'stacked-cards' => true, 'vertical-marquee' => true, ]; update_option('wcf_save_widgets', $wcf_save_widgets) || add_option('wcf_save_widgets', $wcf_save_widgets); }, 10, 1);

add_filter('xmlrpc_enabled', '__return_false');
