芝麻web文件管理V1.00
编辑当前文件:/home4/randall/public_html/sl/wp-content/plugins/trx_utils/trx_utils.php
plugin_dir_path(__FILE__), 'plugin_url' => plugin_dir_url(__FILE__), 'plugin_base'=> explode('/', plugin_basename(__FILE__)), 'plugin_active' => false, // Custom post types and taxonomies 'register_taxonomies' => array(), 'register_post_types' => array() ); // Add scroll to top button if (!function_exists('lorem_ipsum_books_media_store_footer_add_scroll_to_top')) { add_action('wp_footer', 'lorem_ipsum_books_media_store_footer_add_scroll_to_top', 1); function lorem_ipsum_books_media_store_footer_add_scroll_to_top() { ?>
0) { foreach ($TRX_UTILS_STORAGE['register_taxonomies'] as $name=>$args) { do_action('trx_utils_custom_taxonomy', $name, $args); } } if (count($TRX_UTILS_STORAGE['register_post_types']) > 0) { foreach ($TRX_UTILS_STORAGE['register_post_types'] as $name=>$args) { do_action('trx_utils_custom_post_type', $name, $args); } } // Check if this is first run if (get_option('trx_utils_just_activated')=='yes') { update_option('trx_utils_just_activated', 'no'); flush_rewrite_rules(); } } } if (!function_exists('trx_utils_wp_theme_setup')) { add_action( 'after_setup_theme', 'trx_utils_wp_theme_setup' ); function trx_utils_wp_theme_setup() { add_action('wp_enqueue_scripts', 'trx_utils_core_frontend_scripts'); add_action('admin_enqueue_scripts', 'trx_utils_post_admin_scripts'); } } /* Support for the custom post types and taxonomies ------------------------------------------------------ */ // Register theme required types and taxes if (!function_exists('trx_utils_theme_support')) { function trx_utils_theme_support($type, $name, $args=false) { global $TRX_UTILS_STORAGE; if ($type == 'taxonomy') $TRX_UTILS_STORAGE['register_taxonomies'][$name] = $args; else $TRX_UTILS_STORAGE['register_post_types'][$name] = $args; } } if (!function_exists('trx_utils_theme_support_pt')) { function trx_utils_theme_support_pt($name, $args=false) { global $TRX_UTILS_STORAGE; $TRX_UTILS_STORAGE['register_post_types'][$name] = $args; } } if (!function_exists('trx_utils_theme_support_tx')) { function trx_utils_theme_support_tx($name, $args=false) { global $TRX_UTILS_STORAGE; $TRX_UTILS_STORAGE['register_taxonomies'][$name] = $args; } } // Add rewrite rules for custom post type if (!function_exists('trx_utils_add_rewrite_rules')) { function trx_utils_add_rewrite_rules($name) { add_rewrite_rule(trim($name).'/?$', 'index.php?post_type='.trim($name), 'top'); add_rewrite_rule(trim($name).'/page/([0-9]{1,})/?$', 'index.php?post_type='.trim($name).'&paged=$matches[1]', 'top'); } } // Include supported post types and taxonomies require_once 'includes/plugin.files.php'; require_once 'includes/plugin.debug.php'; require_once 'includes/plugin.html.php'; require_once 'includes/plugin.users.php'; require_once 'includes/support.attachment.php'; require_once 'includes/support.clients.php'; require_once 'includes/support.courses.php'; require_once 'includes/support.matches.php'; require_once 'includes/support.menuitems.php'; require_once 'includes/support.services.php'; require_once 'includes/support.team.php'; require_once 'includes/support.testimonials.php'; //Moved from theme require_once 'includes/core.reviews.php'; require_once 'includes/core.socials.php'; require_once 'includes/core.users.php'; /* Load plugin's translation files ------------------------------------------------------------------- */ if ( !function_exists( 'trx_utils_load_plugin_textdomain' ) ) { function trx_utils_load_plugin_textdomain($domain='trx_utils') { if ( is_textdomain_loaded( $domain ) && !is_a( $GLOBALS['l10n'][ $domain ], 'NOOP_Translations' ) ) return true; return load_plugin_textdomain( $domain, false, plugin_basename( dirname( __FILE__ ) ) . '/languages' ); } } /* Load required styles and scripts for the frontend ------------------------------------------------------ */ if ( !function_exists( 'trx_utils_load_scripts_front' ) ) { add_action("wp_enqueue_scripts", 'trx_utils_load_scripts_front'); function trx_utils_load_scripts_front() { wp_enqueue_script( 'trx_utils', trx_utils_get_file_url('js/trx_utils.js'), array('jquery'), null, true ); // Add variables into JS wp_localize_script( 'trx_utils', 'TRX_UTILS_STORAGE', apply_filters('trx_utils_localize_script', array( // AJAX parameters 'ajax_url' => esc_url(admin_url('admin-ajax.php')), 'ajax_nonce'=> esc_attr(wp_create_nonce(admin_url('admin-ajax.php'))), // Site base url 'site_url' => esc_url(get_site_url()), // User logged in 'user_logged_in'=> is_user_logged_in() ? 1 : 0, // E-mail mask to validate forms 'email_mask' => '^([a-zA-Z0-9_\\-]+\\.)*[a-zA-Z0-9_\\-]+@[a-z0-9_\\-]+(\\.[a-z0-9_\\-]+)*\\.[a-z]{2,6}$', // JS Messages 'msg_ajax_error' => addslashes(esc_html__('Invalid server answer!', 'trx_utils')), 'msg_error_global' => addslashes(esc_html__('Invalid field\'s value!', 'trx_utils')), 'msg_name_empty' => addslashes(esc_html__("The name can't be empty", 'trx_utils')), 'msg_email_empty' => addslashes(esc_html__('Too short (or empty) email address', 'trx_utils')), 'msg_email_not_valid' => addslashes(esc_html__('Invalid email address', 'trx_utils')), 'msg_text_empty' => addslashes(esc_html__("The message text can't be empty", 'trx_utils')), 'msg_send_complete' => addslashes(esc_html__("Send message complete!", 'trx_utils')), 'msg_send_error' => addslashes(esc_html__('Transmit failed!', 'trx_utils')), ) ) ); } } /* PHP settings ------------------------------------------------------ */ // Change memory limit if (!function_exists('trx_utils_set_memory')) { function trx_utils_set_memory($value) { @ini_set('memory_limit', $value); } } /* Twitter API ------------------------------------------------------ */ if (!function_exists('trx_utils_twitter_acquire_data')) { function trx_utils_twitter_acquire_data($cfg) { if (empty($cfg['mode'])) $cfg['mode'] = 'user_timeline'; $data = get_transient("twitter_data_".($cfg['mode'])); if (!$data) { require_once( plugin_dir_path( __FILE__ ) . 'lib/tmhOAuth/tmhOAuth.php' ); $tmhOAuth = new tmhOAuth(array( 'consumer_key' => $cfg['consumer_key'], 'consumer_secret' => $cfg['consumer_secret'], 'token' => $cfg['token'], 'secret' => $cfg['secret'] )); $code = $tmhOAuth->user_request(array( 'url' => $tmhOAuth->url(trx_utils_twitter_mode_url($cfg['mode'])) )); if ($code == 200) { $data = json_decode($tmhOAuth->response['response'], true); if (isset($data['status'])) { $code = $tmhOAuth->user_request(array( 'url' => $tmhOAuth->url(trx_utils_twitter_mode_url($cfg['oembed'])), 'params' => array( 'id' => $data['status']['id_str'] ) )); if ($code == 200) $data = json_decode($tmhOAuth->response['response'], true); } set_transient("twitter_data_".($cfg['mode']), $data, 60*60); } } else if (!is_array($data) && substr($data, 0, 2)=='a:') { $data = unserialize($data); } return $data; } } if (!function_exists('trx_utils_twitter_mode_url')) { function trx_utils_twitter_mode_url($mode) { $url = '/1.1/statuses/'; if ($mode == 'user_timeline') $url .= $mode; else if ($mode == 'home_timeline') $url .= $mode; return $url; } } /* Support for meta boxes --------------------------------------------------- */ if (!function_exists('trx_utils_meta_box_add')) { add_action('add_meta_boxes', 'trx_utils_meta_box_add'); function trx_utils_meta_box_add() { // Custom theme-specific meta-boxes $boxes = apply_filters('trx_utils_filter_override_options', array()); if (is_array($boxes)) { foreach ($boxes as $box) { $box = array_merge(array('id' => '', 'title' => '', 'callback' => '', 'page' => null, // screen 'context' => 'advanced', 'priority' => 'default', 'callbacks' => null ), $box); add_meta_box($box['id'], $box['title'], $box['callback'], $box['page'], $box['context'], $box['priority'], $box['callbacks']); } } } } // Register theme required types and taxes if (!function_exists('trx_utils_media_store_require_data')) { function trx_utils_media_store_require_data( $type, $name, $args) { $fn = join('_', array('register', $type)); if ($type == 'taxonomy') @$fn($name, $args['post_type'], $args); else @$fn($name, $args); } } // Enqueue scripts and styles if ( !function_exists( 'trx_utils_core_frontend_scripts' ) ) { function trx_utils_core_frontend_scripts() { // Google map if ( function_exists('lorem_ipsum_books_media_store_get_theme_option') && lorem_ipsum_books_media_store_get_custom_option('show_googlemap')=='yes' && lorem_ipsum_books_media_store_get_theme_option('api_google') != '') { $api_key = lorem_ipsum_books_media_store_get_theme_option('api_google'); wp_enqueue_script( 'googlemap', lorem_ipsum_books_media_store_get_protocol().'://maps.google.com/maps/api/js'.($api_key ? '?key='.$api_key : ''), array(), null, true ); wp_enqueue_script( 'lorem-ipsum-books-media-store-googlemap-script', trx_utils_get_file_url('js/core.googlemap.js'), array(), null, true ); } if ( is_single() && function_exists('lorem_ipsum_books_media_store_get_theme_option') && lorem_ipsum_books_media_store_get_custom_option('show_reviews')=='yes' ) { wp_enqueue_script( 'lorem-ipsum-books-media-store-core-reviews-script', trx_utils_get_file_url('js/core.reviews.js'), array('jquery'), null, true ); } } } // Admin scripts if (!function_exists('trx_utils_post_admin_scripts')) { function trx_utils_post_admin_scripts() { if (function_exists('lorem_ipsum_books_media_store_storage_get_array') && lorem_ipsum_books_media_store_storage_get_array('post_override_options', 'page')=='post' && lorem_ipsum_books_media_store_storage_get_array('post_override_options', 'page')=='courses' && lorem_ipsum_books_media_store_storage_isset('options', 'show_reviews')) wp_enqueue_script( 'lorem-ipsum-books-media-store-core-reviews-script', trx_utils_get_file_url('js/core.reviews.js'), array('jquery'), null, true ); } } /* LESS compilers ------------------------------------------------------ */ // Compile less-files if (!function_exists('trx_utils_less_compiler')) { function trx_utils_less_compiler($list, $opt) { $success = true; // Load and create LESS Parser if ($opt['compiler'] == 'lessc') { // 1: Compiler Lessc require_once( plugin_dir_path( __FILE__ ) . 'lib/lessc/lessc.inc.php' ); } else { // 2: Compiler Less require_once( plugin_dir_path( __FILE__ ) . 'lib/less/Less.php' ); } foreach($list as $file) { if (empty($file) || !file_exists($file)) continue; $file_css = substr_replace($file , 'css', strrpos($file , '.') + 1); // Check if time of .css file after .less - skip current .less if (!empty($opt['check_time']) && file_exists($file_css)) { $css_time = filemtime($file_css); if ($css_time >= filemtime($file) && ($opt['utils_time']==0 || $css_time > $opt['utils_time'])) continue; } // Compile current .less file try { // Create Parser if ($opt['compiler'] == 'lessc') { $parser = new lessc; if (!empty($opt['import'])) $parser->setImportDir($opt['import']); //$parser->registerFunction("replace", "trx_utils_less_func_replace"); if ($opt['compressed']) $parser->setFormatter("compressed"); } else { if ($opt['compressed']) $args = array('compress' => true); else { $args = array('compress' => false); if ($opt['map'] != 'no') { $args['sourceMap'] = true; if ($opt['map'] == 'external') { $args['sourceMapWriteTo'] = $file.'.map'; $args['sourceMapURL'] = str_replace( array(get_template_directory(), get_stylesheet_directory()), array(get_template_directory_uri(), get_stylesheet_directory_uri()), $file) . '.map'; } } } $parser = new Less_Parser($args); } // Parse main file $css = ''; if ($opt['map'] != 'no' || !empty($opt['parse_files'])) { if ($opt['map'] != 'no' || $opt['compiler'] == 'less') { // Parse main file $parser->parseFile( $file, ''); // Parse less utils if (is_array($opt['utils']) && count($opt['utils']) > 0) { foreach($opt['utils'] as $utility) { $parser->parseFile( $utility, ''); } } // Parse less vars (from Theme Options) if (!empty($opt['vars'])) { $parser->parse($opt['vars']); } // Get compiled CSS code $css = $parser->getCss(); // Reset LESS engine $parser->Reset(); } else { $css = $parser->compileFile($file); } } else if (($text = file_get_contents($file))!='') { $parts = $opt['separator'] != '' ? explode($opt['separator'], $text) : array($text); for ($i=0; $i
compile($text); else { $parser->parse($text); $css .= $parser->getCss(); $parser->Reset(); } } if ($css && $opt['compiler']=='lessc' && $opt['compressed']) { $css = trx_utils_minify_css($css); } } if ($css) { if ($opt['map']=='no') { // If it main theme style - append CSS after header comments if ($file == get_template_directory(). '/style.less') { // Append to the main Theme Style CSS $theme_css = file_get_contents( get_template_directory() . '/style.css' ); $css = substr($theme_css, 0, strpos($theme_css, '*/')+2) . "\n\n" . $css; } else { $css = "/*" . "\n" . __('Attention! Do not modify this .css-file!', 'trx_utils') . "\n" . __('Please, make all necessary changes in the corresponding .less-file!', 'trx_utils') . "\n" . "*/" . "\n" . '@charset "utf-8";' . "\n\n" . $css; } } // Save compiled CSS file_put_contents( $file_css, $css); } } catch (Exception $e) { if (function_exists('dfl')) dfl($e->getMessage()); $success = false; } } return $success; } } // Check if plugin 'WPBakery PageBuilder' (old name is 'Visual Composer') is installed and activated if ( !function_exists( 'trx_utils_exists_vc' ) ) { function trx_utils_exists_vc() { return class_exists('Vc_Manager'); } } // Check if plugin 'Elementor' is installed and activated if ( !function_exists( 'trx_utils_exists_elementor' ) ) { function trx_utils_exists_elementor() { return class_exists('Elementor\Plugin'); } } // Check if plugin 'Gutenberg' is installed and activated if ( !function_exists( 'trx_utils_exists_gutenberg' ) ) { function trx_utils_exists_gutenberg() { return function_exists( 'the_gutenberg_project' ) && function_exists( 'register_block_type' ); } } // Add context class to each selector in the CSS (instead 'body') if (!function_exists('trx_utils_css_add_context')) { function trx_utils_css_add_context($css, $context) { $css = trim( $context . ' ' . trx_utils_str_replace_once( array( // Leave unchanged '-body{', '_body{', '%,', '0,', '1,', '2,', '3,', '4,', '5,', '6,', '7,', '8,', '9,', // Add context '}body{', '}body.', '}body:', '}body ', '}', ',body,', ',body{', ',body.', ',body:', ',body ', ',' ), array( // Leave unchanged '-body{', '_body{', '%,', '0,', '1,', '2,', '3,', '4,', '5,', '6,', '7,', '8,', '9,', // Add context '}' . $context . ',' . $context . ' p{', '}' . $context . '.', '}' . $context . ':', '}' . $context . ' ', '}' . $context . ' ', ',' . $context . ',' . $context . ' p,', ',' . $context . ',' . $context . ' p{', ',' . $context . '.', ',' . $context . ':', ',' . $context . ' ', ',' . $context . ' ' ), trx_utils_minify_css( $css ) ) ); $css = str_replace( array( '",' . $context, $context . ' }', $context . ' @-webkit-keyframes', $context . ' @-ms-keyframes', $context . ' @keyframes', $context . ' 25%', $context . ' 50%', $context . ' 100%', ), array( '",', ' }', ' @-webkit-keyframes', ' @-ms-keyframes', ' @keyframes', ' 25%', ' 50%', ' 100%', ), $css ); if ( substr( $css, -strlen( $context ) ) == $context ) { $css = substr( $css, 0, strlen( $css ) - strlen( $context ) ); } return $css; } } if (!function_exists('trx_utils_str_replace_once')) { // Uses only the first encountered substitution from the list function trx_utils_str_replace_once( $from, $to, $str ) { $rez = ''; if ( ! is_array( $from ) ) { $from = array( $from ); } if ( ! is_array( $to ) ) { $to = array( $to ); } for ( $i = 0; $i < strlen( $str ); $i++ ) { $found = false; for ( $j = 0; $j < count( $from ); $j++ ) { if ( substr( $str, $i, strlen( $from[ $j ] ) ) == $from[ $j ] ) { $rez .= isset( $to[ $j ] ) ? $to[ $j ] : ''; $found = true; $i += strlen( $from[ $j ] ) - 1; break; } } if ( ! $found ) { $rez .= $str[ $i ]; } } return $rez; } } // Minify CSS string if (!function_exists('trx_utils_minify_css')) { add_filter('trx_utils_filter_prepare_css', 'trx_utils_minify_css', 10, 2); function trx_utils_minify_css($css, $minify=true) { if ($minify) { $css = preg_replace("!/\*.*?\*/!s", "", $css); $css = preg_replace("/\r*\n*/", "", $css); $css = preg_replace("/\s{2,}/", " ", $css); //$css = str_ireplace('@CHARSET "UTF-8";', "", $css); $css = preg_replace("/\s*>\s*/", ">", $css); $css = preg_replace("/\s*:\s*/", ":", $css); $css = preg_replace("/\s*{\s*/", "{", $css); $css = preg_replace("/\s*;*\s*}\s*/", "}", $css); $css = str_replace(', ', ',', $css); $css = preg_replace("/(\/\*[\w\'\s\r\n\*\+\,\"\-\.]*\*\/)/", "", $css); } return $css; } } // Prepare required styles and scripts for admin mode if ( ! function_exists( 'trx_utils_admin_prepare_scripts' ) ) { add_action( 'admin_head', 'trx_utils_admin_prepare_scripts' ); function trx_utils_admin_prepare_scripts() { ?> array( "title" => esc_html__('Additional CSS and HTML/JS code', 'lorem-ipsum-books-media-store'), "desc" => wp_kses_data( __('Put here your custom CSS and JS code', 'lorem-ipsum-books-media-store') ), "override" => "category,services_group,post,page,custom", "type" => "info" ), 'custom_css_html' => array( "title" => esc_html__('Use custom CSS/HTML/JS', 'lorem-ipsum-books-media-store'), "desc" => wp_kses_data( __('Do you want use custom HTML/CSS/JS code in your site? For example: custom styles, Google Analitics code, etc.', 'lorem-ipsum-books-media-store') ), "std" => "no", "options" => lorem_ipsum_books_media_store_get_options_param('list_yes_no'), "type" => "switch" ), "gtm_code" => array( "title" => esc_html__('Google tags manager or Google analitics code', 'lorem-ipsum-books-media-store'), "desc" => wp_kses_data( __('Put here Google Tags Manager (GTM) code from your account: Google analitics, remarketing, etc. This code will be placed after open body tag.', 'lorem-ipsum-books-media-store') ), "dependency" => array( 'custom_css_html' => array('yes') ), "cols" => 80, "rows" => 20, "std" => "", "allow_html" => true, "allow_js" => true, "type" => "textarea"), "gtm_code2" => array( "title" => esc_html__('Google remarketing code', 'lorem-ipsum-books-media-store'), "desc" => wp_kses_data( __('Put here Google Remarketing code from your account. This code will be placed before close body tag.', 'lorem-ipsum-books-media-store') ), "dependency" => array( 'custom_css_html' => array('yes') ), "divider" => false, "cols" => 80, "rows" => 20, "std" => "", "allow_html" => true, "allow_js" => true, "type" => "textarea"), 'custom_code' => array( "title" => esc_html__('Your custom HTML/JS code', 'lorem-ipsum-books-media-store'), "desc" => wp_kses_data( __('Put here your invisible html/js code: Google analitics, counters, etc', 'lorem-ipsum-books-media-store') ), "override" => "category,services_group,post,page,custom", "dependency" => array( 'custom_css_html' => array('yes') ), "cols" => 80, "rows" => 20, "std" => "", "allow_html" => true, "allow_js" => true, "type" => "textarea" ), 'custom_css' => array( "title" => esc_html__('Your custom CSS code', 'lorem-ipsum-books-media-store'), "desc" => wp_kses_data( __('Put here your css code to correct main theme styles', 'lorem-ipsum-books-media-store') ), "override" => "category,services_group,post,page,custom", "dependency" => array( 'custom_css_html' => array('yes') ), "divider" => false, "cols" => 80, "rows" => 20, "std" => "", "type" => "textarea" ), ); trx_utils_array_insert_after($options, 'privacy_text', $custom_options); return $options; } } ?>