���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!PKE\ class-file-size.phpnuW+Aget_file_url( $request ); return new WP_REST_Response( [ 'type' => 'success', 'size_in_bytes' => $this->get_file_size( $file_url ), ], 200 ); } catch ( WPSEO_File_Size_Exception $exception ) { return new WP_REST_Response( [ 'type' => 'failure', 'response' => $exception->getMessage(), ], 404 ); } } /** * Retrieves the file url. * * @param WP_REST_Request $request The request to retrieve file url from. * * @return string The file url. * @throws WPSEO_File_Size_Exception The file is hosted externally. */ protected function get_file_url( WP_REST_Request $request ) { $file_url = rawurldecode( $request->get_param( 'url' ) ); if ( ! $this->is_externally_hosted( $file_url ) ) { return $file_url; } throw WPSEO_File_Size_Exception::externally_hosted( $file_url ); } /** * Checks if the file is hosted externally. * * @param string $file_url The file url. * * @return bool True if it is hosted externally. */ protected function is_externally_hosted( $file_url ) { return wp_parse_url( home_url(), PHP_URL_HOST ) !== wp_parse_url( $file_url, PHP_URL_HOST ); } /** * Returns the file size. * * @param string $file_url The file url to get the size for. * * @return int The file size. * @throws WPSEO_File_Size_Exception Retrieval of file size went wrong for unknown reasons. */ protected function get_file_size( $file_url ) { $file_config = wp_upload_dir(); $file_url = str_replace( $file_config['baseurl'], '', $file_url ); $file_size = $this->calculate_file_size( $file_url ); if ( ! $file_size ) { throw WPSEO_File_Size_Exception::unknown_error( $file_url ); } return $file_size; } /** * Calculates the file size using the Utils class. * * @param string $file_url The file to retrieve the size for. * * @return int|bool The file size or False if it could not be retrieved. */ protected function calculate_file_size( $file_url ) { return WPSEO_Image_Utils::get_file_size( [ 'path' => $file_url, ] ); } } PKP\o- - health-check/health-check.phpnuW+Arunner = $runner; } /** * Returns the identifier of health check implementation. WordPress needs this to manage the health check (https://developer.wordpress.org/reference/hooks/site_status_tests/). * * @return string The identifier that WordPress requires. */ public function get_test_identifier() { $full_class_name = static::class; $class_name_backslash_index = \strrpos( $full_class_name, '\\' ); $class_name = $full_class_name; if ( $class_name_backslash_index ) { $class_name_index = ( $class_name_backslash_index + 1 ); $class_name = \substr( $full_class_name, $class_name_index ); } $lowercase = \strtolower( $class_name ); $whitespace_as_dashes = \str_replace( '_', '-', $lowercase ); $with_prefix = self::TEST_IDENTIFIER_PREFIX . $whitespace_as_dashes; return $with_prefix; } /** * Runs the health check, and returns its result in the format that WordPress requires to show the results to the user (https://developer.wordpress.org/reference/hooks/site_status_test_result/). * * @return string[] The array containing a WordPress site status report. */ public function run_and_get_result() { $this->runner->run(); return $this->get_result(); } /** * Gets the result from the health check implementation. * * @return string[] The array containing a WordPress site status report. */ abstract protected function get_result(); /** * Returns whether the health check should be excluded from the results. * * @return bool Whether the check should be excluded. */ abstract public function is_excluded(); } PKP\Phealth-check/reports-trait.phpnuW+Atest_identifier = $test_identifier; } /** * Returns a new Report_Builder instance using the set test identifier. * * @return Report_Builder */ private function get_report_builder() { return $this->report_builder_factory->create( $this->test_identifier ); } } PKP\H,' +health-check/postname-permalink-reports.phpnuW+Areport_builder_factory = $report_builder_factory; } /** * Returns the report for when permalinks are set to contain the post name. * * @return string[] The message as a WordPress site status report. */ public function get_success_result() { return $this->get_report_builder() ->set_label( \esc_html__( 'Your permalink structure includes the post name', 'wordpress-seo' ) ) ->set_status_good() ->set_description( \__( 'You do have your postname in the URL of your posts and pages.', 'wordpress-seo' ) ) ->build(); } /** * Returns the report for when permalinks are not set to contain the post name. * * @return string[] The message as a WordPress site status report. */ public function get_has_no_postname_in_permalink_result() { return $this->get_report_builder() ->set_label( \__( 'You do not have your postname in the URL of your posts and pages', 'wordpress-seo' ) ) ->set_status_recommended() ->set_description( $this->get_has_no_postname_in_permalink_description() ) ->set_actions( $this->get_has_no_postname_in_permalink_actions() ) ->build(); } /** * Returns the description for when permalinks are not set to contain the post name. * * @return string The description as a string. */ private function get_has_no_postname_in_permalink_description() { return \sprintf( /* translators: %s expands to '/%postname%/' */ \__( 'It\'s highly recommended to have your postname in the URL of your posts and pages. Consider setting your permalink structure to %s.', 'wordpress-seo' ), '/%postname%/' ); } /** * Returns the actions for when permalinks are not set to contain the post name. * * @return string The actions as a string. */ private function get_has_no_postname_in_permalink_actions() { return \sprintf( /* translators: %1$s is a link start tag to the permalink settings page, %2$s is the link closing tag. */ \__( 'You can fix this on the %1$sPermalink settings page%2$s.', 'wordpress-seo' ), '', '' ); } } PKP\QQ#health-check/links-table-runner.phpnuW+Amigration_status = $migration_status; $this->options_helper = $options_helper; } /** * Runs the health check. Checks if the tagline is set to WordPress' default tagline, or to its set translation. * * @return void */ public function run() { $this->links_table_accessible = $this->migration_status->is_version( 'free', \WPSEO_VERSION ); } /** * Returns true if the links table is accessible * * @return bool The boolean indicating if the health check was succesful. */ public function is_successful() { return $this->links_table_accessible; } } PKP\$ $health-check/links-table-reports.phpnuW+Areport_builder_factory = $report_builder_factory; $this->shortlinker = $shortlinker; } /** * Returns the message for a successful health check. * * @return string[] The message as a WordPress site status report. */ public function get_success_result() { return $this->get_report_builder() ->set_label( \__( 'The text link counter is working as expected', 'wordpress-seo' ) ) ->set_status_good() ->set_description( $this->get_success_description() ) ->build(); } /** * Returns the message for a failed health check. * * @return string[] The message as a WordPress site status report. */ public function get_links_table_not_accessible_result() { return $this->get_report_builder() ->set_label( \__( 'The text link counter feature is not working as expected', 'wordpress-seo' ) ) ->set_status_recommended() ->set_description( $this->get_links_table_not_accessible_description() ) ->set_actions( $this->get_actions() ) ->build(); } /** * Returns the description for when the health check was successful. * * @return string The description as a string. */ private function get_success_description() { return \sprintf( /* translators: 1: Link to the Yoast SEO blog, 2: Link closing tag. */ \esc_html__( 'The text link counter helps you improve your site structure. %1$sFind out how the text link counter can enhance your SEO%2$s.', 'wordpress-seo' ), '', WPSEO_Admin_Utils::get_new_tab_message() . '' ); } /** * Returns the description for when the health couldn't access the links table. * * @return string The description as a string. */ private function get_links_table_not_accessible_description() { return \sprintf( /* translators: 1: Yoast SEO. */ \__( 'For this feature to work, %1$s needs to create a table in your database. We were unable to create this table automatically.', 'wordpress-seo' ), 'Yoast SEO' ); } /** * Returns the actions that the user should take when the links table is not accessible. * * @return string The actions as a string. */ private function get_actions() { return \sprintf( /* translators: 1: Link to the Yoast help center, 2: Link closing tag. */ \esc_html__( '%1$sFind out how to solve this problem on our help center%2$s.', 'wordpress-seo' ), '', WPSEO_Admin_Utils::get_new_tab_message() . '' ); } } PKP\T9 &health-check/page-comments-reports.phpnuW+Areport_builder_factory = $report_builder_factory; } /** * Returns the report for when comments are set to be all on one page. * * @return string[] The message as a WordPress site status report. */ public function get_success_result() { return $this->get_report_builder() ->set_label( \esc_html__( 'Comments are displayed on a single page', 'wordpress-seo' ) ) ->set_status_good() ->set_description( \__( 'Comments on your posts are displayed on a single page. This is just like we\'d suggest it. You\'re doing well!', 'wordpress-seo' ) ) ->build(); } /** * Returns the report for when comments are set to be broken up across multiple pages. * * @return string[] The message as a WordPress site status report. */ public function get_has_comments_on_multiple_pages_result() { return $this->get_report_builder() ->set_label( \__( 'Comments break into multiple pages', 'wordpress-seo' ) ) ->set_status_recommended() ->set_description( \__( 'Comments on your posts break into multiple pages. As this is not needed in 999 out of 1000 cases, we recommend you disable it. To fix this, uncheck "Break comments into pages..." on the Discussion Settings page.', 'wordpress-seo' ) ) ->set_actions( $this->get_has_comments_on_multiple_pages_actions() ) ->build(); } /** * Returns the actions for when the comments are set to be broken up across multiple pages. * * @return string The actions as a string. */ private function get_has_comments_on_multiple_pages_actions() { return \sprintf( /* translators: 1: Opening tag of the link to the discussion settings page, 2: Link closing tag. */ \esc_html__( '%1$sGo to the Discussion Settings page%2$s', 'wordpress-seo' ), '', '' ); } } PKP\6 'health-check/report-builder-factory.phpnuW+Aset_test_identifier( $test_identifier ); } } PKP\jhealth-check/report-builder.phpnuW+Alabel = $label; return $this; } /** * Sets the name for the test that the plugin uses to identify the test. * * @param string $test_identifier The identifier for the health check. * @return Report_Builder This builder. */ public function set_test_identifier( $test_identifier ) { $this->test_identifier = $test_identifier; return $this; } /** * Sets the status of the test result to GOOD (green label). * * @return Report_Builder This builder. */ public function set_status_good() { $this->status = self::STATUS_GOOD; return $this; } /** * Sets the status of the test result to RECOMMENDED (orange label). * * @return Report_Builder This builder. */ public function set_status_recommended() { $this->status = self::STATUS_RECOMMENDED; return $this; } /** * Sets the status of the test result to CRITICAL (red label). * * @return Report_Builder This builder. */ public function set_status_critical() { $this->status = self::STATUS_CRITICAL; return $this; } /** * Sets a description for the test result. This will be the heading for the result in the user interface. * * @param string $description The description for the test result. * @return Report_Builder This builder. */ public function set_description( $description ) { $this->description = $description; return $this; } /** * Sets a text that describes how the user can solve the failed health check. * * @param string $actions The descriptive text. * @return Report_Builder This builder. */ public function set_actions( $actions ) { $this->actions = $actions; return $this; } /** * Builds an array of strings in the format that WordPress uses to display health checks (https://developer.wordpress.org/reference/hooks/site_status_test_result/). * * @return array The report in WordPress' site status report format. */ public function build() { return [ 'label' => $this->label, 'status' => $this->status, 'badge' => $this->get_badge(), 'description' => $this->description, 'actions' => $this->get_actions_with_signature(), 'test' => $this->test_identifier, ]; } /** * Generates a badge that the user can see. * * @return string[] The badge. */ private function get_badge() { return [ 'label' => $this->get_badge_label(), 'color' => $this->get_badge_color(), ]; } /** * Generates the label for a badge. * * @return string The badge label. */ private function get_badge_label() { return \__( 'SEO', 'wordpress-seo' ); } /** * Generates the color for the badge using the current status. * * @return string The color for the badge's outline. */ private function get_badge_color() { if ( $this->status === self::STATUS_CRITICAL || $this->status === self::STATUS_RECOMMENDED ) { return 'red'; } return 'blue'; } /** * Concatenates the set actions with Yoast's signature. * * @return string A string containing the set actions and Yoast's signature. */ private function get_actions_with_signature() { return $this->actions . $this->get_signature(); } /** * Generates Yoast's signature that's displayed at the bottom of the health check result. * * @return string Yoast's signature as an HTML string. */ private function get_signature() { return \sprintf( /* translators: 1: Start of a paragraph beginning with the Yoast icon, 2: Expands to 'Yoast SEO', 3: Paragraph closing tag. */ \esc_html__( '%1$sThis was reported by the %2$s plugin%3$s', 'wordpress-seo' ), '

', 'Yoast SEO', '

' ); } } PKP\Ț"health-check/links-table-check.phpnuW+Arunner = $runner; $this->reports = $reports; $this->should_index_links_conditional = $should_index_links_conditional; $this->reports->set_test_identifier( $this->get_test_identifier() ); $this->set_runner( $this->runner ); } /** * Returns the WordPress-friendly health check result. * * @return string[] The WordPress-friendly health check result. */ protected function get_result() { if ( $this->runner->is_successful() ) { return $this->reports->get_success_result(); } return $this->reports->get_links_table_not_accessible_result(); } /** * Returns whether the health check should be excluded from the results. * * @return bool false, because it's not excluded. */ public function is_excluded() { return ! $this->should_index_links_conditional->is_met(); } } PKP\*health-check/postname-permalink-runner.phpnuW+Apermalinks_contain_postname = false; } /** * Runs the health check. Checks if permalinks are set to contain the post name. * * @return void */ public function run() { $this->permalinks_contain_postname = ( \strpos( \get_option( 'permalink_structure' ), '%postname%' ) !== false ); } /** * Returns true if permalinks are set to contain the post name. * * @return bool True if permalinks are set to contain the post name. */ public function is_successful() { return $this->permalinks_contain_postname; } } PKP\(q&health-check/default-tagline-check.phpnuW+Arunner = $runner; $this->reports = $reports; $this->reports->set_test_identifier( $this->get_test_identifier() ); $this->set_runner( $this->runner ); } /** * Returns the WordPress-friendly health check result. * * @return string[] The WordPress-friendly health check result. */ protected function get_result() { if ( $this->runner->is_successful() ) { return $this->reports->get_success_result(); } return $this->reports->get_has_default_tagline_result(); } /** * Returns whether the health check should be excluded from the results. * * @return bool false, because it's not excluded. */ public function is_excluded() { return false; } } PKP\x)health-check/postname-permalink-check.phpnuW+Arunner = $runner; $this->reports = $reports; $this->reports->set_test_identifier( $this->get_test_identifier() ); $this->set_runner( $this->runner ); } /** * Returns the WordPress-friendly health check result. * * @return string[] The WordPress-friendly health check result. */ protected function get_result() { if ( $this->runner->is_successful() ) { return $this->reports->get_success_result(); } return $this->reports->get_has_no_postname_in_permalink_result(); } /** * Returns whether the health check should be excluded from the results. * * @return bool false, because it's not excluded. */ public function is_excluded() { return false; } } PKP\$  (health-check/default-tagline-reports.phpnuW+Areport_builder_factory = $report_builder_factory; } /** * Returns the message for a successful health check. * * @return string[] The message as a WordPress site status report. */ public function get_success_result() { return $this->get_report_builder() ->set_label( \__( 'You changed the default WordPress tagline', 'wordpress-seo' ) ) ->set_status_good() ->set_description( \__( 'You are using a custom tagline or an empty one.', 'wordpress-seo' ) ) ->build(); } /** * Returns the message for a failed health check. In this case, when the user still has the default WordPress tagline set. * * @return string[] The message as a WordPress site status report. */ public function get_has_default_tagline_result() { return $this->get_report_builder() ->set_label( \__( 'You should change the default WordPress tagline', 'wordpress-seo' ) ) ->set_status_recommended() ->set_description( \__( 'You still have the default WordPress tagline. Even an empty one is probably better.', 'wordpress-seo' ) ) ->set_actions( $this->get_actions() ) ->build(); } /** * Returns the actions that the user should take when his tagline is still set to the WordPress default. * * @return string The actions as an HTML string. */ private function get_actions() { $query_args = [ 'autofocus[control]' => 'blogdescription', ]; $customize_url = \add_query_arg( $query_args, \wp_customize_url() ); return \sprintf( /* translators: 1: link open tag; 2: link close tag. */ \esc_html__( '%1$sYou can change the tagline in the customizer%2$s.', 'wordpress-seo' ), '', '' ); } } PKP\UCC%health-check/page-comments-runner.phpnuW+Acomments_on_single_page = false; } /** * Runs the health check. Checks if comments are displayed on a single page. * * @return void */ public function run() { $this->comments_on_single_page = \get_option( 'page_comments' ) !== '1'; } /** * Returns true if comments are displayed on a single page. * * @return bool True if comments are displayed on a single page. */ public function is_successful() { return $this->comments_on_single_page; } } PKP\a!health-check/runner-interface.phpnuW+Ahas_default_tagline = $translated_blog_description === $blog_description || $blog_description === self::DEFAULT_BLOG_DESCRIPTION; } /** * Returns true if the tagline is set to a non-default tagline. * * @return bool The boolean indicating if the health check was succesful. */ public function is_successful() { return ! $this->has_default_tagline; } } PKP\*xx$health-check/page-comments-check.phpnuW+Arunner = $runner; $this->reports = $reports; $this->reports->set_test_identifier( $this->get_test_identifier() ); $this->set_runner( $this->runner ); } /** * Returns the WordPress-friendly health check result. * * @return string[] The WordPress-friendly health check result. */ protected function get_result() { if ( $this->runner->is_successful() ) { return $this->reports->get_success_result(); } return $this->reports->get_has_comments_on_multiple_pages_result(); } /** * Returns whether the health check should be excluded from the results. * * @return bool false, because it's not excluded. */ public function is_excluded() { return false; } } PKP\b7q,health-check/myyoast-api-request-factory.phpnuW+Aindexable_builder_versions = $indexable_builder_versions; } /** * Determines if an Indexable has a lower version than the builder for that Indexable's type. * * @param Indexable $indexable The Indexable to check. * * @return bool True if the given version is older than the current latest version. */ public function indexable_needs_upgrade( $indexable ) { if ( ( ! $indexable ) || ( ! \is_a( $indexable, Indexable::class ) ) ) { return false; } return $this->needs_upgrade( $indexable->object_type, $indexable->version ); } /** * Determines if an Indexable version for the type is lower than the current version for that Indexable type. * * @param string $object_type The Indexable's object type. * @param int $indexable_version The Indexable's version. * * @return bool True if the given version is older than the current latest version. */ protected function needs_upgrade( $object_type, $indexable_version ) { $current_indexable_builder_version = $this->indexable_builder_versions->get_latest_version_for_type( $object_type ); // If the Indexable's version is below the current version, that Indexable needs updating. return $indexable_version < $current_indexable_builder_version; } /** * Sets an Indexable's version to the latest version. * * @param Indexable $indexable The Indexable to update. * * @return Indexable */ public function set_latest( $indexable ) { if ( ! $indexable ) { return $indexable; } $indexable->version = $this->indexable_builder_versions->get_latest_version_for_type( $indexable->object_type ); return $indexable; } } PKP\ŋ )importing/conflicting-plugins-service.phpnuW+Aget_active_plugins(); // Search for active plugins. return $this->get_active_conflicting_plugins( $all_active_plugins ); } /** * Deactivates the specified plugin(s) if any, or the entire list of known conflicting plugins. * * @param string|array|false $plugins Optional. The plugin filename, or array of plugin filenames, to deactivate. * * @return void */ public function deactivate_conflicting_plugins( $plugins = false ) { // If no plugins are specified, deactivate any known conflicting plugins that are active. if ( ! $plugins ) { $plugins = $this->detect_conflicting_plugins(); } // In case of a single plugin, wrap it in an array. if ( \is_string( $plugins ) ) { $plugins = [ $plugins ]; } if ( ! \is_array( $plugins ) ) { return; } // Deactivate all specified plugins across the network, while retaining their deactivation hook. \deactivate_plugins( $plugins ); } /** * Loop through the list of known conflicting plugins to check if one of the plugins is active. * * @param array $all_active_plugins All plugins loaded by WordPress. * * @return array The array of activated conflicting plugins. */ protected function get_active_conflicting_plugins( $all_active_plugins ) { $active_conflicting_plugins = []; foreach ( Conflicting_Plugins::all_plugins() as $plugin ) { if ( \in_array( $plugin, $all_active_plugins, true ) ) { $active_conflicting_plugins[] = $plugin; } } return $active_conflicting_plugins; } /** * Get a list of all plugins active in the current WordPress instance. * * @return array|false The names of all active plugins. */ protected function get_active_plugins() { // Request a list of active plugins from WordPress. $all_active_plugins = \get_option( 'active_plugins' ); return $this->ignore_deactivating_plugin( $all_active_plugins ); } /** * While deactivating a plugin, we should ignore the plugin currently being deactivated. * * @param array $all_active_plugins All plugins currently loaded by WordPress. * * @return array The remaining active plugins. */ protected function ignore_deactivating_plugin( $all_active_plugins ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are strictly comparing only. if ( isset( $_GET['action'] ) && isset( $_GET['plugin'] ) && \is_string( $_GET['action'] ) && \is_string( $_GET['plugin'] ) && \wp_unslash( $_GET['action'] ) === 'deactivate' ) { $deactivated_plugin = \sanitize_text_field( \wp_unslash( $_GET['plugin'] ) ); \check_admin_referer( 'deactivate-plugin_' . $deactivated_plugin ); $key_to_remove = \array_search( $deactivated_plugin, $all_active_plugins, true ); if ( $key_to_remove !== false ) { unset( $all_active_plugins[ $key_to_remove ] ); } } return $all_active_plugins; } } PKP\:importing/aioseo/aioseo-social-images-provider-service.phpnuW+Aaioseo_helper = $aioseo_helper; $this->image = $image; } /** * Retrieves the default source of social images. * * @param string $social_setting The social settings we're working with, eg. open-graph or twitter. * * @return string The default source of social images. */ public function get_default_social_image_source( $social_setting ) { return $this->get_social_defaults( 'source', $social_setting ); } /** * Retrieves the default custom social image if there is any. * * @param string $social_setting The social settings we're working with, eg. open-graph or twitter. * * @return string The global default social image. */ public function get_default_custom_social_image( $social_setting ) { return $this->get_social_defaults( 'custom_image', $social_setting ); } /** * Retrieves social defaults, be it Default Post Image Source or Default Post Image. * * @param string $setting The setting we want, eg. source or custom image. * @param string $social_setting The social settings we're working with, eg. open-graph or twitter. * * @return string The social default. */ public function get_social_defaults( $setting, $social_setting ) { switch ( $setting ) { case 'source': $setting_key = 'defaultImageSourcePosts'; break; case 'custom_image': $setting_key = 'defaultImagePosts'; break; default: return ''; } $aioseo_settings = $this->aioseo_helper->get_global_option(); if ( $social_setting === 'og' ) { $social_setting = 'facebook'; } if ( ! isset( $aioseo_settings['social'][ $social_setting ]['general'][ $setting_key ] ) ) { return ''; } return $aioseo_settings['social'][ $social_setting ]['general'][ $setting_key ]; } /** * Retrieves the url of the first image in content. * * @param int $post_id The post id to extract the image from. * * @return string The url of the first image in content. */ public function get_first_image_in_content( $post_id ) { $image = $this->image->get_gallery_image( $post_id ); if ( ! $image ) { $image = $this->image->get_post_content_image( $post_id ); } return $image; } /** * Retrieves the url of the first attached image. * * @param int $post_id The post id to extract the image from. * * @return string The url of the first attached image. */ public function get_first_attached_image( $post_id ) { if ( \get_post_type( $post_id ) === 'attachment' ) { return $this->image->get_attachment_image_source( $post_id, 'fullsize' ); } $attachments = \get_children( [ 'post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', ] ); if ( $attachments && ! empty( $attachments ) ) { return $this->image->get_attachment_image_source( \array_values( $attachments )[0]->ID, 'fullsize' ); } return ''; } /** * Retrieves the url of the featured image. * * @param int $post_id The post id to extract the image from. * * @return string The url of the featured image. */ public function get_featured_image( $post_id ) { $feature_image_id = \get_post_thumbnail_id( $post_id ); if ( $feature_image_id ) { return $this->image->get_attachment_image_source( $feature_image_id, 'fullsize' ); } return ''; } /** * Retrieves the url of the first available image. Tries each image source to get one image. * * @param int $post_id The post id to extract the image from. * * @return string The url of the featured image. */ public function get_auto_image( $post_id ) { $image = $this->get_first_attached_image( $post_id ); if ( ! $image ) { $image = $this->get_first_image_in_content( $post_id ); } return $image; } } PKP\ѩ3importing/aioseo/aioseo-robots-provider-service.phpnuW+Aaioseo_helper = $aioseo_helper; } /** * Retrieves the robot setting set globally in AIOSEO. * * @param string $setting_name The name of the robot setting, eg. noindex. * * @return bool Whether global robot settings enable or not the specific setting. */ public function get_global_robot_settings( $setting_name ) { $aioseo_settings = $this->aioseo_helper->get_global_option(); if ( empty( $aioseo_settings ) ) { return false; } $global_robot_settings = $aioseo_settings['searchAppearance']['advanced']['globalRobotsMeta']; if ( $global_robot_settings['default'] === true ) { return false; } return $global_robot_settings[ $setting_name ]; } /** * Gets the subtype's robot setting from the db. * * @param array $mapping The mapping of the setting we're working with. * * @return bool The robot setting. */ public function get_subtype_robot_setting( $mapping ) { $aioseo_settings = \json_decode( \get_option( $mapping['option_name'], '' ), true ); return $aioseo_settings['searchAppearance'][ $mapping['type'] ][ $mapping['subtype'] ]['advanced']['robotsMeta'][ $mapping['robot_type'] ]; } } PKP\G;' .importing/aioseo/aioseo-replacevar-service.phpnuW+A '%%archive_title%%', '#archive_date' => '%%date%%', '#attachment_caption' => '%%caption%%', '#author_bio' => '%%user_description%%', '#author_first_name' => '%%author_first_name%%', '#author_last_name' => '%%author_last_name%%', '#author_name' => '%%name%%', '#blog_title' => '%%sitename%%', // Same with #site_title. '#categories' => '%%category%%', '#current_date' => '%%currentdate%%', '#current_day' => '%%currentday%%', '#current_month' => '%%currentmonth%%', '#current_year' => '%%currentyear%%', '#parent_title' => '%%parent_title%%', '#page_number' => '%%pagenumber%%', '#permalink' => '%%permalink%%', '#post_content' => '%%post_content%%', '#post_date' => '%%date%%', '#post_day' => '%%post_day%%', '#post_month' => '%%post_month%%', '#post_title' => '%%title%%', '#post_year' => '%%post_year%%', '#post_excerpt_only' => '%%excerpt_only%%', '#post_excerpt' => '%%excerpt%%', '#search_term' => '%%searchphrase%%', '#separator_sa' => '%%sep%%', '#site_title' => '%%sitename%%', '#tagline' => '%%sitedesc%%', '#taxonomy_title' => '%%category_title%%', '#taxonomy_description' => '%%term_description%%', ]; /** * Edits the replace_vars map of the class. * * @param string $aioseo_var The AIOSEO replacevar. * @param string $yoast_var The Yoast replacevar. * * @return void */ public function compose_map( $aioseo_var, $yoast_var ) { $map = $this->replace_vars_map; $map[ $aioseo_var ] = $yoast_var; $this->replace_vars_map = $map; } /** * Transforms AIOSEO replacevars into Yoast replacevars. * * @param string $aioseo_replacevar The AIOSEO replacevar. * * @return string The Yoast replacevar. */ public function transform( $aioseo_replacevar ) { $yoast_replacevar = \str_replace( \array_keys( $this->replace_vars_map ), \array_values( $this->replace_vars_map ), $aioseo_replacevar ); // Transform the '#custom_field-' tags into '%%cf_%%' ones. $yoast_replacevar = \preg_replace_callback( '/#custom_field-([a-zA-Z0-9_-]+)/', static function ( $cf_matches ) { return '%%cf_' . $cf_matches[1] . '%%'; }, $yoast_replacevar ); // Transform the '#tax_name-' tags into '%%ct_%%' ones. $yoast_replacevar = \preg_replace_callback( '/#tax_name-([a-zA-Z0-9_-]+)/', static function ( $ct_matches ) { return '%%ct_' . $ct_matches[1] . '%%'; }, $yoast_replacevar ); return $yoast_replacevar; } } PKP\RK6importing/aioseo/aioseo-robots-transformer-service.phpnuW+Arobots_provider = $robots_provider; } /** * Transforms the robot setting, taking into consideration whether they defer to global defaults. * * @param string $setting_name The name of the robot setting, eg. noindex. * @param bool $setting_value The value of the robot setting. * @param array $mapping The mapping of the setting we're working with. * * @return bool The transformed robot setting. */ public function transform_robot_setting( $setting_name, $setting_value, $mapping ) { $aioseo_settings = \json_decode( \get_option( $mapping['option_name'], '' ), true ); // Let's check first if it defers to global robot settings. if ( empty( $aioseo_settings ) || ! isset( $aioseo_settings['searchAppearance'][ $mapping['type'] ][ $mapping['subtype'] ]['advanced']['robotsMeta']['default'] ) ) { return $setting_value; } $defers_to_defaults = $aioseo_settings['searchAppearance'][ $mapping['type'] ][ $mapping['subtype'] ]['advanced']['robotsMeta']['default']; if ( $defers_to_defaults ) { return $this->robots_provider->get_global_robot_settings( $setting_name ); } return $setting_value; } } PKP\AEn  )importing/importable-detector-service.phpnuW+Aimporters = $importers; } /** * Returns the detected importers that have data to work with. * * @param string|null $plugin The plugin name of the importer. * @param string|null $type The type of the importer. * * @return array The detected importers that have data to work with. */ public function detect_importers( $plugin = null, $type = null ) { $detectors = $this->filter_actions( $this->importers, $plugin, $type ); $detected = []; foreach ( $detectors as $detector ) { if ( $detector->is_enabled() && $detector->get_type() !== 'cleanup' && ! $detector->get_completed() && $detector->get_limited_unindexed_count( 1 ) > 0 ) { $detected[ $detector->get_plugin() ][] = $detector->get_type(); } } return $detected; } /** * Returns the detected cleanups that have data to work with. * * @param string|null $plugin The plugin name of the cleanup. * * @return array The detected importers that have data to work with. */ public function detect_cleanups( $plugin = null ) { $detectors = $this->filter_actions( $this->importers, $plugin, 'cleanup' ); $detected = []; foreach ( $detectors as $detector ) { if ( $detector->is_enabled() && ! $detector->get_completed() && $detector->get_limited_unindexed_count( 1 ) > 0 ) { $detected[ $detector->get_plugin() ][] = $detector->get_type(); } } return $detected; } /** * Filters all import actions from a list that do not match the given Plugin or Type. * * @param Importing_Action_Interface[] $all_actions The complete list of actions. * @param string|null $plugin The Plugin name whose actions to keep. * @param string|null $type The type of actions to keep. * * @return array */ public function filter_actions( $all_actions, $plugin = null, $type = null ) { return \array_filter( $all_actions, static function ( $action ) use ( $plugin, $type ) { return $action->is_compatible_with( $plugin, $type ); } ); } } PKE\ class-file-size.phpnuW+APKP\o- -  health-check/health-check.phpnuW+APKP\Pfhealth-check/reports-trait.phpnuW+APKP\H,' +Shealth-check/postname-permalink-reports.phpnuW+APKP\QQ#U"health-check/links-table-runner.phpnuW+APKP\$ $(health-check/links-table-reports.phpnuW+APKP\T9 &6health-check/page-comments-reports.phpnuW+APKP\6 '@health-check/report-builder-factory.phpnuW+APKP\jBhealth-check/report-builder.phpnuW+APKP\Ț"Whealth-check/links-table-check.phpnuW+APKP\*N_health-check/postname-permalink-runner.phpnuW+APKP\(q&4chealth-check/default-tagline-check.phpnuW+APKP\x)%ihealth-check/postname-permalink-check.phpnuW+APKP\$  (ohealth-check/default-tagline-reports.phpnuW+APKP\UCC%{xhealth-check/page-comments-runner.phpnuW+APKP\a!|health-check/runner-interface.phpnuW+APKP\;'y}health-check/default-tagline-runner.phpnuW+APKP\*xx$health-check/page-comments-check.phpnuW+APKP\b7q,ehealth-check/myyoast-api-request-factory.phpnuW+APKP\ۣq (indexables/indexable-version-manager.phpnuW+APKP\ŋ )"importing/conflicting-plugins-service.phpnuW+APKP\:importing/aioseo/aioseo-social-images-provider-service.phpnuW+APKP\ѩ3importing/aioseo/aioseo-robots-provider-service.phpnuW+APKP\G;' .+importing/aioseo/aioseo-replacevar-service.phpnuW+APKP\RK6(importing/aioseo/aioseo-robots-transformer-service.phpnuW+APKP\AEn  )aimporting/importable-detector-service.phpnuW+APKw