diff --git a/tests/checks/test-DeprecatedFunctionsCheck.php b/tests/checks/test-DeprecatedFunctionsCheck.php index e62abe6..f9c937e 100644 --- a/tests/checks/test-DeprecatedFunctionsCheck.php +++ b/tests/checks/test-DeprecatedFunctionsCheck.php @@ -7,342 +7,339 @@ class DeprecatedFunctionsTest extends CodeCheckTestBase { public function testFunctionsParameters() { $functions = array( 'wp-includes' => array( - '0.71' => array( - 'the_category_ID' => 'get_the_category()', - 'the_category_head' => 'get_the_category_by_ID()', - ), - '1.2' => array( - 'permalink_link' => 'the_permalink()', - ), - '1.5' => array( - 'start_wp' => '', - ), - '1.5.1' => array( - 'get_postdata' => 'get_post()', - ), - '2.0' => array( - 'create_user' => 'wp_create_user()', - 'next_post' => 'next_post_link()', - 'previous_post' => 'previous_post_link()', - 'user_can_create_draft' => 'current_user_can()', - 'user_can_create_post' => 'current_user_can()', - 'user_can_delete_post' => 'current_user_can()', - 'user_can_delete_post_comments' => 'current_user_can()', - 'user_can_edit_post' => 'current_user_can()', - 'user_can_edit_post_comments' => 'current_user_can()', - 'user_can_edit_post_date' => 'current_user_can()', - 'user_can_edit_user' => 'current_user_can()', - 'user_can_set_post_date' => 'current_user_can()', - ), - '2.1' => array( - 'dropdown_cats' => 'wp_dropdown_categories()', - 'get_archives' => 'wp_get_archives()', - 'get_author_link' => 'get_author_posts_url()', - 'get_autotoggle' => '', - 'get_link' => 'get_bookmark()', - 'get_linkcatname' => 'get_category()', - 'get_linkrating' => 'sanitize_bookmark_field()', - 'get_links' => 'get_bookmarks()', - 'get_links_list' => 'wp_list_bookmarks()', - 'get_links_withrating' => 'get_bookmarks()', - 'get_linksbyname' => 'get_bookmarks()', - 'get_linkobjects' => 'get_bookmarks()', - 'get_linkobjectsbyname' => 'get_bookmarks()', - 'get_linksbyname_withrating' => 'get_bookmarks()', - 'get_settings' => 'get_option()', - 'link_pages' => 'wp_link_pages()', - 'links_popup_script' => '', - 'list_authors' => 'wp_list_authors()', - 'list_cats' => 'wp_list_categories()', - 'wp_get_links' => 'wp_list_bookmarks()', - 'wp_get_linksbyname' => 'wp_list_bookmarks()', - 'wp_get_post_cats' => 'wp_get_post_categories()', - 'wp_list_cats' => 'wp_list_categories()', - 'wp_set_post_cats' => 'wp_set_post_categories()', - ), - '2.2' => array( - 'comments_rss' => 'get_post_comments_feed_link()', - ), - '2.3' => array( - 'permalink_single_rss' => 'the_permalink_rss()', - ), - '2.5' => array( - 'comments_rss_link' => 'post_comments_feed_link()', - 'get_attachment_icon' => 'wp_get_attachment_image()', - 'get_attachment_icon_src' => 'wp_get_attachment_image_src()', - 'get_attachment_innerHTML' => 'wp_get_attachment_image()', - 'get_author_rss_link' => 'get_author_feed_link()', - 'get_category_rss_link' => 'get_category_feed_link()', - 'get_the_attachment_link' => 'wp_get_attachment_link()', - 'gzip_compression' => '', - 'wp_clearcookie' => 'wp_clear_auth_cookie()', - 'wp_get_cookie_login' => '', - 'wp_login' => 'wp_signon()', - 'wp_setcookie' => 'wp_set_auth_cookie()', - ), - '2.7' => array( - 'get_commentdata' => 'get_comment()', - ), - '2.8' => array( - '__ngettext' => '_n()', - '__ngettext_noop' => '_n_noop()', - 'attribute_escape' => 'esc_attr()', - 'get_author_name' => "get_the_author_meta( 'display_name' )", - 'get_category_children' => 'get_term_children()', - 'get_catname' => 'get_cat_name()', - 'get_the_author_aim' => "get_the_author_meta( 'aim' )", - 'get_the_author_description' => "get_the_author_meta( 'description' )", - 'get_the_author_email' => "get_the_author_meta( 'email' )", - 'get_the_author_firstname' => "get_the_author_meta( 'first_name' )", - 'get_the_author_icq' => "get_the_author_meta( 'icq' )", - 'get_the_author_ID' => "get_the_author_meta( 'ID' )", - 'get_the_author_lastname' => "get_the_author_meta( 'last_name' )", - 'get_the_author_login' => "get_the_author_meta( 'login' )", - 'get_the_author_msn' => "get_the_author_meta( 'msn' )", - 'get_the_author_nickname' => "get_the_author_meta( 'nickname' )", - 'get_the_author_url' => "get_the_author_meta( 'url' )", - 'get_the_author_yim' => "get_the_author_meta( 'yim' )", - 'js_escape' => 'esc_js()', - 'register_sidebar_widget' => 'wp_register_sidebar_widget()', - 'register_widget_control' => 'wp_register_widget_control()', - 'sanitize_url' => 'esc_url_raw()', - 'the_author_aim' => "the_author_meta( 'aim' )", - 'the_author_description' => "the_author_meta( 'description' )", - 'the_author_email' => "the_author_meta( 'email' )", - 'the_author_firstname' => "the_author_meta( 'first_name' )", - 'the_author_icq' => "the_author_meta( 'icq' )", - 'the_author_ID' => "the_author_meta( 'ID' )", - 'the_author_lastname' => "the_author_meta( 'last_name' )", - 'the_author_login' => "the_author_meta( 'login' )", - 'the_author_msn' => "the_author_meta( 'msn' )", - 'the_author_nickname' => "the_author_meta( 'nickname' )", - 'the_author_url' => "the_author_meta( 'url' )", - 'the_author_yim' => "the_author_meta( 'yim' )", - 'unregister_sidebar_widget' => 'wp_unregister_sidebar_widget()', - 'unregister_widget_control' => 'wp_unregister_widget_control()', - 'wp_specialchars' => 'esc_html()', - ), - '2.9' => array( - '_c' => '_x()', - 'make_url_footnote' => '', - 'the_content_rss' => 'the_content_feed()', - ), - '3.0' => array( - '_nc' => '_nx()', - 'automatic_feed_links' => "add_theme_support( 'automatic-feed-links' )", - 'clean_url' => 'esc_url_raw()', - 'clear_global_post_cache' => 'clean_post_cache()', - 'delete_usermeta' => 'delete_user_meta()', - 'funky_javascript_callback' => '', - 'funky_javascript_fix' => '', - 'generate_random_password' => 'wp_generate_password()', - 'get_alloptions' => 'wp_load_alloptions()', - 'get_blog_list' => 'wp_get_sites()', - 'get_most_active_blogs' => '', - 'get_profile' => 'get_the_author_meta()', - 'get_user_details' => 'get_user_by()', - 'get_usermeta' => 'get_user_meta()', - 'get_usernumposts' => 'count_user_posts()', - 'graceful_fail' => 'wp_die()', - 'is_main_blog' => 'is_main_site()', - 'is_site_admin' => 'is_super_admin()', - 'is_taxonomy' => 'taxonomy_exists()', - 'is_term' => 'term_exists()', - 'set_current_user' => 'wp_set_current_user()', - 'translate_with_context' => '_x()', - 'update_usermeta' => 'update_user_meta()', - 'validate_email' => 'is_email()', - ), - '3.1' => array( - 'get_dashboard_blog' => '', - 'get_users_of_blog' => 'get_users()', - 'is_plugin_page' => '', - 'update_category_cache' => '', - ), - '3.2' => array( - 'wp_timezone_supported' => '', - 'wp_clone' => '', - ), - '3.3' => array( - 'get_boundary_post_rel_link' => '', - 'get_index_rel_link' => '', - 'get_parent_post_rel_link' => '', - 'get_user_by_email' => "get_user_by( 'email' )", - 'get_user_metavalues' => '', - 'get_userdatabylogin' => "get_user_by( 'login' )", - 'index_rel_link' => '', - 'is_blog_user' => 'is_user_member_of_blog()', - 'parent_post_rel_link' => '', - 'sanitize_user_object' => '', - 'start_post_rel_link' => '', - 'the_editor' => 'wp_editor()', - 'wp_admin_bar_dashboard_view_site_menu' => '', - 'wpmu_admin_do_redirect' => '', - 'wpmu_admin_redirect_add_updated_param' => '', - ), - '3.4' => array( - 'add_custom_background' => 'add_theme_support( "custom-background", $args )', - 'add_custom_image_header' => 'add_theme_support( "custom-header", $args )', - 'clean_page_cache' => 'clean_post_cache()', - 'clean_pre' => '', - 'debug_fclose' => 'error_log()', - 'debug_fopen' => 'error_log()', - 'debug_fwrite' => 'error_log()', - 'get_current_theme' => 'wp_get_theme()', - 'get_theme' => 'wp_get_theme()', - 'get_theme_data' => 'wp_get_theme()', - 'get_themes' => 'wp_get_themes()', - 'remove_custom_background' => "remove_theme_support( 'custom-background' )", - 'remove_custom_image_header' => "remove_theme_support( 'custom-header' )", - 'update_page_cache' => 'update_post_cache()', - 'wp_explain_nonce' => 'wp_nonce_ays', - ), - '3.5' => array( - '_get_post_ancestors' => '', - '_save_post_hook' => '', - 'gd_edit_image_support' => 'wp_image_editor_supports()', - 'get_page' => 'get_post()', - 'image_resize' => 'wp_get_image_editor()', - 'sticky_class' => 'post_class()', - 'user_pass_ok' => 'wp_authenticate()', - 'wp_cache_reset' => '', - 'wp_get_single_post' => 'get_post()', - 'wp_load_image' => 'wp_get_image_editor()', - ), - '3.6' => array( - 'get_user_id_from_string' => 'get_user_by()', - 'wp_convert_bytes_to_hr' => 'size_format()', - ), - '3.7' => array( - '_search_terms_tidy' => '', - 'get_blogaddress_by_domain' => '', - ), - '3.9' => array( - 'rich_edit_exists' => '', - 'default_topic_count_text' => '', - 'format_to_post' => '', - 'get_current_site_name' => 'get_current_site()', - 'wpmu_current_site' => '', - ), - '4.0' => array( - 'like_escape' => '$wpdb->esc_like()', - 'url_is_accessable_via_ssl' => '', - ), + '0.71' => array( + 'the_category_ID' => 'get_the_category()', + 'the_category_head' => 'get_the_category_by_ID()', + ), + '1.2' => array( + 'permalink_link' => 'the_permalink()', + ), + '1.5' => array( + 'start_wp' => '', + ), + '1.5.1' => array( + 'get_postdata' => 'get_post()', + ), + '2.0' => array( + 'create_user' => 'wp_create_user()', + 'next_post' => 'next_post_link()', + 'previous_post' => 'previous_post_link()', + 'user_can_create_draft' => 'current_user_can()', + 'user_can_create_post' => 'current_user_can()', + 'user_can_delete_post' => 'current_user_can()', + 'user_can_delete_post_comments' => 'current_user_can()', + 'user_can_edit_post' => 'current_user_can()', + 'user_can_edit_post_comments' => 'current_user_can()', + 'user_can_edit_post_date' => 'current_user_can()', + 'user_can_edit_user' => 'current_user_can()', + 'user_can_set_post_date' => 'current_user_can()', + ), + '2.1' => array( + 'dropdown_cats' => 'wp_dropdown_categories()', + 'get_archives' => 'wp_get_archives()', + 'get_author_link' => 'get_author_posts_url()', + 'get_autotoggle' => '', + 'get_link' => 'get_bookmark()', + 'get_linkcatname' => 'get_category()', + 'get_linkrating' => 'sanitize_bookmark_field()', + 'get_links' => 'get_bookmarks()', + 'get_links_list' => 'wp_list_bookmarks()', + 'get_links_withrating' => 'get_bookmarks()', + 'get_linksbyname' => 'get_bookmarks()', + 'get_linkobjects' => 'get_bookmarks()', + 'get_linkobjectsbyname' => 'get_bookmarks()', + 'get_linksbyname_withrating' => 'get_bookmarks()', + 'get_settings' => 'get_option()', + 'link_pages' => 'wp_link_pages()', + 'links_popup_script' => '', + 'list_authors' => 'wp_list_authors()', + 'list_cats' => 'wp_list_categories()', + 'wp_get_links' => 'wp_list_bookmarks()', + 'wp_get_linksbyname' => 'wp_list_bookmarks()', + 'wp_get_post_cats' => 'wp_get_post_categories()', + 'wp_list_cats' => 'wp_list_categories()', + 'wp_set_post_cats' => 'wp_set_post_categories()', + ), + '2.2' => array( + 'comments_rss' => 'get_post_comments_feed_link()', + ), + '2.3' => array( + 'permalink_single_rss' => 'the_permalink_rss()', + ), + '2.5' => array( + 'comments_rss_link' => 'post_comments_feed_link()', + 'get_attachment_icon' => 'wp_get_attachment_image()', + 'get_attachment_icon_src' => 'wp_get_attachment_image_src()', + 'get_attachment_innerHTML' => 'wp_get_attachment_image()', + 'get_author_rss_link' => 'get_author_feed_link()', + 'get_category_rss_link' => 'get_category_feed_link()', + 'get_the_attachment_link' => 'wp_get_attachment_link()', + 'gzip_compression' => '', + 'wp_clearcookie' => 'wp_clear_auth_cookie()', + 'wp_get_cookie_login' => '', + 'wp_login' => 'wp_signon()', + 'wp_setcookie' => 'wp_set_auth_cookie()', + ), + '2.7' => array( + 'get_commentdata' => 'get_comment()', + ), + '2.8' => array( + '__ngettext' => '_n()', + '__ngettext_noop' => '_n_noop()', + 'attribute_escape' => 'esc_attr()', + 'get_author_name' => "get_the_author_meta( 'display_name' )", + 'get_category_children' => 'get_term_children()', + 'get_catname' => 'get_cat_name()', + 'get_the_author_aim' => "get_the_author_meta( 'aim' )", + 'get_the_author_description' => "get_the_author_meta( 'description' )", + 'get_the_author_email' => "get_the_author_meta( 'email' )", + 'get_the_author_firstname' => "get_the_author_meta( 'first_name' )", + 'get_the_author_icq' => "get_the_author_meta( 'icq' )", + 'get_the_author_ID' => "get_the_author_meta( 'ID' )", + 'get_the_author_lastname' => "get_the_author_meta( 'last_name' )", + 'get_the_author_login' => "get_the_author_meta( 'login' )", + 'get_the_author_msn' => "get_the_author_meta( 'msn' )", + 'get_the_author_nickname' => "get_the_author_meta( 'nickname' )", + 'get_the_author_url' => "get_the_author_meta( 'url' )", + 'get_the_author_yim' => "get_the_author_meta( 'yim' )", + 'js_escape' => 'esc_js()', + 'register_sidebar_widget' => 'wp_register_sidebar_widget()', + 'register_widget_control' => 'wp_register_widget_control()', + 'sanitize_url' => 'esc_url_raw()', + 'the_author_aim' => "the_author_meta( 'aim' )", + 'the_author_description' => "the_author_meta( 'description' )", + 'the_author_email' => "the_author_meta( 'email' )", + 'the_author_firstname' => "the_author_meta( 'first_name' )", + 'the_author_icq' => "the_author_meta( 'icq' )", + 'the_author_ID' => "the_author_meta( 'ID' )", + 'the_author_lastname' => "the_author_meta( 'last_name' )", + 'the_author_login' => "the_author_meta( 'login' )", + 'the_author_msn' => "the_author_meta( 'msn' )", + 'the_author_nickname' => "the_author_meta( 'nickname' )", + 'the_author_url' => "the_author_meta( 'url' )", + 'the_author_yim' => "the_author_meta( 'yim' )", + 'unregister_sidebar_widget' => 'wp_unregister_sidebar_widget()', + 'unregister_widget_control' => 'wp_unregister_widget_control()', + 'wp_specialchars' => 'esc_html()', + ), + '2.9' => array( + '_c' => '_x()', + 'make_url_footnote' => '', + 'the_content_rss' => 'the_content_feed()', + ), + '3.0' => array( + '_nc' => '_nx()', + 'automatic_feed_links' => "add_theme_support( 'automatic-feed-links' )", + 'clean_url' => 'esc_url_raw()', + 'clear_global_post_cache' => 'clean_post_cache()', + 'delete_usermeta' => 'delete_user_meta()', + 'funky_javascript_callback' => '', + 'funky_javascript_fix' => '', + 'generate_random_password' => 'wp_generate_password()', + 'get_alloptions' => 'wp_load_alloptions()', + 'get_blog_list' => 'wp_get_sites()', + 'get_most_active_blogs' => '', + 'get_profile' => 'get_the_author_meta()', + 'get_user_details' => 'get_user_by()', + 'get_usermeta' => 'get_user_meta()', + 'get_usernumposts' => 'count_user_posts()', + 'graceful_fail' => 'wp_die()', + 'is_main_blog' => 'is_main_site()', + 'is_site_admin' => 'is_super_admin()', + 'is_taxonomy' => 'taxonomy_exists()', + 'is_term' => 'term_exists()', + 'set_current_user' => 'wp_set_current_user()', + 'translate_with_context' => '_x()', + 'update_usermeta' => 'update_user_meta()', + 'validate_email' => 'is_email()', + ), + '3.1' => array( + 'get_dashboard_blog' => '', + 'get_users_of_blog' => 'get_users()', + 'is_plugin_page' => '', + 'update_category_cache' => '', + ), + '3.2' => array( + 'wp_timezone_supported' => '', + 'wp_clone' => '', + ), + '3.3' => array( + 'get_boundary_post_rel_link' => '', + 'get_index_rel_link' => '', + 'get_parent_post_rel_link' => '', + 'get_user_by_email' => "get_user_by( 'email' )", + 'get_user_metavalues' => '', + 'get_userdatabylogin' => "get_user_by( 'login' )", + 'index_rel_link' => '', + 'is_blog_user' => 'is_user_member_of_blog()', + 'parent_post_rel_link' => '', + 'sanitize_user_object' => '', + 'start_post_rel_link' => '', + 'the_editor' => 'wp_editor()', + 'wp_admin_bar_dashboard_view_site_menu' => '', + 'wpmu_admin_do_redirect' => '', + 'wpmu_admin_redirect_add_updated_param' => '', + ), + '3.4' => array( + 'add_custom_background' => 'add_theme_support( "custom-background", $args )', + 'add_custom_image_header' => 'add_theme_support( "custom-header", $args )', + 'clean_page_cache' => 'clean_post_cache()', + 'clean_pre' => '', + 'debug_fclose' => 'error_log()', + 'debug_fopen' => 'error_log()', + 'debug_fwrite' => 'error_log()', + 'get_current_theme' => 'wp_get_theme()', + 'get_theme' => 'wp_get_theme()', + 'get_theme_data' => 'wp_get_theme()', + 'get_themes' => 'wp_get_themes()', + 'remove_custom_background' => "remove_theme_support( 'custom-background' )", + 'remove_custom_image_header' => "remove_theme_support( 'custom-header' )", + 'update_page_cache' => 'update_post_cache()', + 'wp_explain_nonce' => 'wp_nonce_ays', + ), + '3.5' => array( + '_get_post_ancestors' => '', + '_save_post_hook' => '', + 'gd_edit_image_support' => 'wp_image_editor_supports()', + 'get_page' => 'get_post()', + 'image_resize' => 'wp_get_image_editor()', + 'sticky_class' => 'post_class()', + 'user_pass_ok' => 'wp_authenticate()', + 'wp_cache_reset' => '', + 'wp_get_single_post' => 'get_post()', + 'wp_load_image' => 'wp_get_image_editor()', + ), + '3.6' => array( + 'get_user_id_from_string' => 'get_user_by()', + 'wp_convert_bytes_to_hr' => 'size_format()', + ), + '3.7' => array( + '_search_terms_tidy' => '', + 'get_blogaddress_by_domain' => '', + ), + '3.9' => array( + 'rich_edit_exists' => '', + 'default_topic_count_text' => '', + 'format_to_post' => '', + 'get_current_site_name' => 'get_current_site()', + 'wpmu_current_site' => '', + ), + '4.0' => array( + 'like_escape' => '$wpdb->esc_like()', + 'url_is_accessable_via_ssl' => '', + ), ), 'wp-admin' => array( - 'MU' => array( - 'install_blog_defaults' => 'wp_install_defaults()', - ), - '2.1' => array( - 'tinymce_include' => 'wp_editor()', - ), - '2.5' => array( - 'documentation_link' => '', - ), - '2.6' => array( - 'dropdown_categories' => 'wp_category_checklist()', - 'dropdown_link_categories' => 'wp_link_category_checklist()', - ), - '2.9' => array( - 'get_real_file_to_edit' => '', - ), - '3.0' => array( - 'activate_sitewide_plugin' => 'activate_plugin()', - 'add_option_update_handler' => 'register_setting()', - 'codepress_footer_js' => '', - 'codepress_get_lang' => '', - 'deactivate_sitewide_plugin' => 'deactivate_plugin()', - 'is_wpmu_sitewide_plugin' => 'is_network_only_plugin()', - 'ms_deprecated_blogs_file' => '', - 'mu_options' => '', - 'remove_option_update_handler' => 'unregister_setting()', - 'use_codepress' => '', - 'wp_dropdown_cats' => 'wp_dropdown_categories()', - 'wp_shrink_dimensions' => 'wp_constrain_dimensions()', - 'wpmu_checkAvailableSpace' => 'is_upload_space_available()', - 'wpmu_get_blog_allowedthemes' => 'WP_Theme::get_allowed_on_site()', - 'wpmu_menu' => '', - ), - '3.1' => array( - 'get_author_user_ids' => 'get_users()', - 'get_editable_authors' => 'get_users()', - 'get_editable_user_ids' => 'get_users()', - 'get_nonauthor_user_ids' => 'get_users()', - 'get_others_drafts' => '', - 'get_others_unpublished_posts' => '', - 'get_others_pending' => '', - 'install_themes_feature_list' => 'get_theme_feature_list()', - ), - '3.2' => array( - 'favorite_actions' => 'WP_Admin_Bar', - 'wp_dashboard_quick_press_output' => 'wp_dashboard_quick_press()', - ), - '3.3' => array( - 'add_contextual_help' => 'get_current_screen()->add_help_tab()', - 'media_upload_audio' => 'wp_media_upload_handler()', - 'media_upload_file' => 'wp_media_upload_handler()', - 'media_upload_image' => 'wp_media_upload_handler()', - 'media_upload_video' => 'wp_media_upload_handler()', - 'screen_layout' => 'get_current_screen()->render_per_page_options()', - 'screen_meta' => 'get_current_screen()->render_screen_meta()', - 'screen_options' => 'get_current_screen()->render_per_page_options()', - 'type_url_form_audio' => "wp_media_insert_url_form( 'audio' )", - 'type_url_form_file' => "wp_media_insert_url_form( 'file' )", - 'type_url_form_image' => "wp_media_insert_url_form( 'image' )", - 'type_url_form_video' => "wp_media_insert_url_form( 'video' )", - 'wp_preload_dialogs' => 'wp_editor()', - 'wp_print_editor_js' => 'wp_editor()', - 'wp_quicktags' => 'wp_editor()', - 'wp_tiny_mce' => 'wp_editor()', - ), - '3.4' => array( - 'current_theme_info' => 'wp_get_theme()', - 'get_allowed_themes' => "wp_get_themes( array( 'allowed' => true ) )", - 'get_broken_themes' => "wp_get_themes( array( 'errors' => true )", - 'get_site_allowed_themes' => 'WP_Theme::get_allowed_on_network()', - 'display_theme' => '', - ), - '3.5' => array( - '_insert_into_post_button' => '', - '_media_button' => '', - 'get_default_page_to_edit' => "get_default_post_to_edit( 'page' )", - 'get_post_to_edit' => 'get_post()', - 'get_udims' => 'wp_constrain_dimensions()', - 'wp_create_thumbnail' => 'image_resize()', - ), - '3.6' => array( - 'wp_nav_menu_locations_meta_box' => '', - ), - '3.7' => array( - 'the_attachment_links' => '', - 'wp_update_core' => 'new Core_Upgrader()', - 'wp_update_plugin' => 'new Plugin_Upgrader()', - 'wp_update_theme' => 'new Theme_Upgrader()', - ), - '3.8' => array( - 'get_screen_icon' => '', - 'screen_icon' => '', - 'wp_dashboard_incoming_links' => '', - 'wp_dashboard_incoming_links_control' => '', - 'wp_dashboard_incoming_links_output' => '', - 'wp_dashboard_plugins' => '', - 'wp_dashboard_primary_control' => '', - 'wp_dashboard_recent_comments_control' => '', - 'wp_dashboard_secondary' => '', - 'wp_dashboard_secondary_control' => '', - 'wp_dashboard_secondary_output' => '', - ), - '3.9' => array( - '_relocate_children' => '', - ), - /** - * Root Folder - */ - ), - '' => array( - '3.4' => array( - 'logIO' => 'error_log()', - ), + 'MU' => array( + 'install_blog_defaults' => 'wp_install_defaults()', + ), + '2.1' => array( + 'tinymce_include' => 'wp_editor()', + ), + '2.5' => array( + 'documentation_link' => '', + ), + '2.6' => array( + 'dropdown_categories' => 'wp_category_checklist()', + 'dropdown_link_categories' => 'wp_link_category_checklist()', + ), + '2.9' => array( + 'get_real_file_to_edit' => '', + ), + '3.0' => array( + 'activate_sitewide_plugin' => 'activate_plugin()', + 'add_option_update_handler' => 'register_setting()', + 'codepress_footer_js' => '', + 'codepress_get_lang' => '', + 'deactivate_sitewide_plugin' => 'deactivate_plugin()', + 'is_wpmu_sitewide_plugin' => 'is_network_only_plugin()', + 'ms_deprecated_blogs_file' => '', + 'mu_options' => '', + 'remove_option_update_handler' => 'unregister_setting()', + 'use_codepress' => '', + 'wp_dropdown_cats' => 'wp_dropdown_categories()', + 'wp_shrink_dimensions' => 'wp_constrain_dimensions()', + 'wpmu_checkAvailableSpace' => 'is_upload_space_available()', + 'wpmu_get_blog_allowedthemes' => 'WP_Theme::get_allowed_on_site()', + 'wpmu_menu' => '', + ), + '3.1' => array( + 'get_author_user_ids' => 'get_users()', + 'get_editable_authors' => 'get_users()', + 'get_editable_user_ids' => 'get_users()', + 'get_nonauthor_user_ids' => 'get_users()', + 'get_others_drafts' => '', + 'get_others_unpublished_posts' => '', + 'get_others_pending' => '', + 'install_themes_feature_list' => 'get_theme_feature_list()', + ), + '3.2' => array( + 'favorite_actions' => 'WP_Admin_Bar', + 'wp_dashboard_quick_press_output' => 'wp_dashboard_quick_press()', + ), + '3.3' => array( + 'add_contextual_help' => 'get_current_screen()->add_help_tab()', + 'media_upload_audio' => 'wp_media_upload_handler()', + 'media_upload_file' => 'wp_media_upload_handler()', + 'media_upload_image' => 'wp_media_upload_handler()', + 'media_upload_video' => 'wp_media_upload_handler()', + 'screen_layout' => 'get_current_screen()->render_per_page_options()', + 'screen_meta' => 'get_current_screen()->render_screen_meta()', + 'screen_options' => 'get_current_screen()->render_per_page_options()', + 'type_url_form_audio' => "wp_media_insert_url_form( 'audio' )", + 'type_url_form_file' => "wp_media_insert_url_form( 'file' )", + 'type_url_form_image' => "wp_media_insert_url_form( 'image' )", + 'type_url_form_video' => "wp_media_insert_url_form( 'video' )", + 'wp_preload_dialogs' => 'wp_editor()', + 'wp_print_editor_js' => 'wp_editor()', + 'wp_quicktags' => 'wp_editor()', + 'wp_tiny_mce' => 'wp_editor()', + ), + '3.4' => array( + 'current_theme_info' => 'wp_get_theme()', + 'get_allowed_themes' => "wp_get_themes( array( 'allowed' => true ) )", + 'get_broken_themes' => "wp_get_themes( array( 'errors' => true )", + 'get_site_allowed_themes' => 'WP_Theme::get_allowed_on_network()', + 'display_theme' => '', + ), + '3.5' => array( + '_insert_into_post_button' => '', + '_media_button' => '', + 'get_default_page_to_edit' => "get_default_post_to_edit( 'page' )", + 'get_post_to_edit' => 'get_post()', + 'get_udims' => 'wp_constrain_dimensions()', + 'wp_create_thumbnail' => 'image_resize()', + ), + '3.6' => array( + 'wp_nav_menu_locations_meta_box' => '', + ), + '3.7' => array( + 'the_attachment_links' => '', + 'wp_update_core' => 'new Core_Upgrader()', + 'wp_update_plugin' => 'new Plugin_Upgrader()', + 'wp_update_theme' => 'new Theme_Upgrader()', + ), + '3.8' => array( + 'get_screen_icon' => '', + 'screen_icon' => '', + 'wp_dashboard_incoming_links' => '', + 'wp_dashboard_incoming_links_control' => '', + 'wp_dashboard_incoming_links_output' => '', + 'wp_dashboard_plugins' => '', + 'wp_dashboard_primary_control' => '', + 'wp_dashboard_recent_comments_control' => '', + 'wp_dashboard_secondary' => '', + 'wp_dashboard_secondary_control' => '', + 'wp_dashboard_secondary_output' => '', + ), + '3.9' => array( + '_relocate_children' => '', + ), + ), + '' => array( // Root folder + '3.4' => array( + 'logIO' => 'error_log()', + ), ), ); diff --git a/vip-scanner/checks/DeprecatedFunctionsCheck.php b/vip-scanner/checks/DeprecatedFunctionsCheck.php index f816353..88fd55d 100644 --- a/vip-scanner/checks/DeprecatedFunctionsCheck.php +++ b/vip-scanner/checks/DeprecatedFunctionsCheck.php @@ -3,13 +3,10 @@ * Checks for deprecated WordPress functions. */ -class DeprecatedFunctionsCheck extends BaseCheck { - - function check( $files ) { - $result = true; - $this->increment_check_count(); - - $checks = array( +class DeprecatedFunctionsCheck extends CodeCheckVisitor { + protected static $description_template = 'The function %s is deprecated.'; + protected static $replacement_template = ' Use %s instead.'; + protected static $deprecated_functions = array( /** * wp-includes */ @@ -311,39 +308,23 @@ function check( $files ) { */ // 3.4 'logIO' => 'error_log()', - ); - - foreach ( $this->filter_files( $files, 'php' ) as $file_path => $file_content ) { - - foreach ( $checks as $check => $replacement ) { - - /** - * Before a function, there's either a start of a line, whitespace, . or ( - * This is to avoid false positives, like wp_link_pages() being flagged as link_pages(). - */ - if ( preg_match( '/(?:^|[\s\.\(])' . $check . '\(/m', $file_content, $matches ) ) { - $deprecated_function = trim( rtrim( $matches[0], '(' ) ); - - // Indicate the deprecated function that has been found. - $message = 'The function ' . $deprecated_function . ' is deprecated.'; + ); - // Indicate the replacement function if it exists. - if ( ! empty( $replacement ) ) { - $message .= ' Use ' . $replacement . ' instead.'; - } - - $this->add_error( - 'deprecated', - $message, - BaseScanner::LEVEL_BLOCKER, - $this->get_filename( $file_path ) - ); - $result = false; + function check( PhpParser\Node $node ) { + if( $node instanceof PhpParser\Node\Expr\FuncCall ) { + $name = $node->name->toString(); + if ( array_key_exists( $name, self::$deprecated_functions ) ) { + $message = sprintf( self::$description_template, '' . $name . '' ); + if ( ! empty( self::$deprecated_functions[ $name ] ) ) { + $message .= sprintf( self::$replacement_template, '' . self::$deprecated_functions[ $name ] . '' ); } - } + $this->add_error( + 'deprecated', + $message, + BaseScanner::LEVEL_BLOCKER + ); + } } - - return $result; } }