Files
doitinpoland.com/wp-content/plugins/wpml-string-translation/inc/admin-texts/wpml-admin-text-functionality.class.php
2023-09-12 21:41:04 +02:00

150 lines
3.6 KiB
PHP

<?php
abstract class WPML_Admin_Text_Functionality {
final public function is_blacklisted( $option_name ) {
global $wp_taxonomies;
$black_list = array_fill_keys(
array(
'active_plugins',
'wp_user_roles',
'_wpml_media',
'users_can_register',
'admin_email',
'start_of_week',
'use_balanceTags',
'use_smilies',
'require_name_email',
'comments_notify',
'posts_per_rss',
'sticky_posts',
'page_for_post',
'_wcml_settings',
'_wcml_version',
'page_on_front',
'default_post_format',
'link_manager_enabled',
'icl_sitepress_settings',
'wpml_config_index',
'wpml_config_index_updated',
'wpml_config_files_arr',
'icl_admin_messages',
'wpml-package-translation-db-updates-run',
'wpml_media',
'wpml_ta_settings',
'_icl_admin_option_names',
'_icl_cache',
'icl_sitepress_version',
'rewrite_rules',
'recently_activated',
'wpml_tm_version',
'wp_installer_settings',
'icl_adl_settings',
'rss_use_excerpt',
'template',
'stylesheet',
'comment_whitelist',
'comment_registration',
'html_type',
'use_trackback',
'default_role',
'db_version',
'siteurl',
'home',
'blogname',
'blogdescription',
'mailserver_url',
'mailserver_login',
'mailserver_pass',
'mailserver_port',
'default_category',
'default_comment_status',
'default_ping_status',
'default_pingback_flag',
'comment_moderation',
'moderation_notify',
'permalink_structure',
'gzipcompression',
'hack_file',
'blog_charset',
'ping_sites',
'advanced_edit',
'comment_max_links',
'gmt_offset',
'default_email_category',
'uploads_use_yearmonth_folders',
'upload_path',
'blog_public',
'default_link_category',
'tag_base',
'show_avatars',
'avatar_rating',
'WPLANG',
'wp_icl_translators_cached',
'cron',
'_transient_WPML_ST_MO_Downloader_lang_map',
'icl_translation_jobs_basket',
),
1
);
$tax_prefixes = array_keys( $wp_taxonomies );
foreach ( $tax_prefixes as &$tax_name ) {
$tax_name .= '_children';
}
$blacklist_prefixes = array_merge(
$tax_prefixes,
array( '_transient_', '_site_transient_' )
);
$matcher = '#^' . join( '|^', $blacklist_prefixes ) . '#';
return array_key_exists( $option_name, $black_list )
|| preg_match( $matcher, $option_name ) === 1;
}
protected function read_admin_texts_recursive( $keys, $admin_text_context, $type, &$arr_context, &$arr_type ) {
$keys = ! empty( $keys ) && isset( $keys ['attr']['name'] ) ? array( $keys ) : $keys;
foreach ( $keys as $key ) {
$key_name = $key['attr']['name'];
if ( ! empty( $key['key'] ) ) {
$arr[ $key_name ] = $this->read_admin_texts_recursive(
$key['key'],
$admin_text_context,
$type,
$arr_context,
$arr_type
);
} else {
$arr[ $key_name ] = 1;
$arr_context[ $key_name ] = $admin_text_context;
$arr_type[ $key_name ] = $type;
}
}
return isset( $arr ) ? $arr : false;
}
/**
* @param string $key Name of option to retrieve. Expected to not be SQL-escaped.
* @param mixed $default Value to return in case the string does not exists
*
* @return mixed Value set for the option.
*/
public function get_option_without_filtering( $key, $default = false ) {
global $wpdb;
$value = $wpdb->get_var(
$wpdb->prepare(
"SELECT option_value
FROM {$wpdb->options}
WHERE option_name = %s
LIMIT 1",
$key
)
);
return isset( $value ) ? $value : $default;
}
}