classifier = $classifier; $this->internal_lookup = $internal_lookup; $this->filter = $filter; } /** * Formats an array of links to WPSEO_Link object. * * @param array $extracted_links The links for format. * * @return WPSEO_Link[] The formatted links. */ public function build( array $extracted_links ) { $extracted_links = array_map( array( $this, 'build_link' ), $extracted_links ); $filtered_links = array_filter( $extracted_links, array( $this->filter, 'internal_link_with_fragment_filter', ) ); return $filtered_links; } /** * Builds the link. * * @param string $link The link to build. * * @return WPSEO_Link The built link. */ public function build_link( $link ) { $link_type = $this->classifier->classify( $link ); $target_post_id = 0; if ( $link_type === WPSEO_Link::TYPE_INTERNAL ) { $target_post_id = $this->internal_lookup->lookup( $link ); } return self::get_link( $link, $target_post_id, $link_type ); } /** * Returns the link object. * * @param string $url The URL of the link. * @param int $target_post_id The target post ID. * @param string $type The link type. * * @return WPSEO_Link Generated link object. */ public static function get_link( $url, $target_post_id, $type ) { return new WPSEO_Link( $url, $target_post_id, $type ); } }