Merged in feature/MAW-855-import-code-into-aws (pull request #2)
code import from pantheon * code import from pantheon
This commit is contained in:
175
wp/wp-content/plugins/wordpress-seo-premium/src/integrations/third-party/mastodon.php
vendored
Normal file
175
wp/wp-content/plugins/wordpress-seo-premium/src/integrations/third-party/mastodon.php
vendored
Normal file
@@ -0,0 +1,175 @@
|
||||
<?php
|
||||
|
||||
namespace Yoast\WP\SEO\Premium\Integrations\Third_Party;
|
||||
|
||||
use Yoast\WP\SEO\Conditionals\No_Conditionals;
|
||||
use Yoast\WP\SEO\Helpers\Options_Helper;
|
||||
use Yoast\WP\SEO\Helpers\Social_Profiles_Helper;
|
||||
use Yoast\WP\SEO\Integrations\Integration_Interface;
|
||||
|
||||
/**
|
||||
* Mastodon integration.
|
||||
*/
|
||||
class Mastodon implements Integration_Interface {
|
||||
|
||||
use No_Conditionals;
|
||||
|
||||
/**
|
||||
* Holds the options helper.
|
||||
*
|
||||
* @var Options_Helper
|
||||
*/
|
||||
protected $options_helper;
|
||||
|
||||
/**
|
||||
* Holds the social profiles helper.
|
||||
*
|
||||
* @var Social_Profiles_Helper
|
||||
*/
|
||||
protected $social_profiles_helper;
|
||||
|
||||
/**
|
||||
* Sets the helpers.
|
||||
*
|
||||
* @param Options_Helper $options_helper Options helper.
|
||||
* @param Social_Profiles_Helper $social_profiles_helper Social Profiles helper.
|
||||
*/
|
||||
public function __construct( Options_Helper $options_helper, Social_Profiles_Helper $social_profiles_helper ) {
|
||||
$this->options_helper = $options_helper;
|
||||
$this->social_profiles_helper = $social_profiles_helper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the integration.
|
||||
*
|
||||
* This is the place to register hooks and filters.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register_hooks() {
|
||||
\add_filter( 'wpseo_frontend_presenter_classes', [ $this, 'add_social_link_tags' ], 10, 2 );
|
||||
\add_filter( 'wpseo_person_social_profile_fields', [ $this, 'add_mastodon_to_person_social_profile_fields' ], 11, 1 );
|
||||
\add_filter( 'wpseo_organization_social_profile_fields', [ $this, 'add_mastodon_to_organization_social_profile_fields' ], 11, 1 );
|
||||
\add_filter( 'wpseo_schema_person_social_profiles', [ $this, 'add_mastodon_to_person_schema' ], 10 );
|
||||
\add_filter( 'user_contactmethods', [ $this, 'add_mastodon_to_user_contactmethods' ], 10 );
|
||||
\add_filter( 'wpseo_mastodon_active', [ $this, 'check_mastodon_active' ], 10 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the social profiles presenter to the list of presenters to use.
|
||||
*
|
||||
* @param array $presenters The list of presenters.
|
||||
* @param string $page_type The page type for which the presenters have been collected.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function add_social_link_tags( $presenters, $page_type ) {
|
||||
// Bail out early if something's wrong with the presenters, let's not add any more confusion there.
|
||||
if ( ! \is_array( $presenters ) ) {
|
||||
return $presenters;
|
||||
}
|
||||
|
||||
if ( \in_array( $page_type, [ 'Static_Home_Page', 'Home_Page' ], true ) ) {
|
||||
$presenters = \array_merge( $presenters, [ 'Yoast\WP\SEO\Premium\Presenters\Mastodon_Link_Presenter' ] );
|
||||
}
|
||||
|
||||
return $presenters;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds Mastodon to the list of social profiles.
|
||||
*
|
||||
* @param array $social_profile_fields The social profiles array.
|
||||
*
|
||||
* @return array The updated social profiles array.
|
||||
*/
|
||||
public function add_mastodon_to_person_social_profile_fields( $social_profile_fields ) {
|
||||
// Bail out early if something's wrong with the social profiles, let's not add any more confusion there.
|
||||
if ( ! \is_array( $social_profile_fields ) ) {
|
||||
return $social_profile_fields;
|
||||
}
|
||||
$social_profile_fields['mastodon'] = 'get_non_valid_url';
|
||||
|
||||
return $social_profile_fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds Mastodon to the list of social profiles.
|
||||
*
|
||||
* @param array $social_profile_fields The social profiles array.
|
||||
*
|
||||
* @return array The updated social profiles array.
|
||||
*/
|
||||
public function add_mastodon_to_organization_social_profile_fields( $social_profile_fields ) {
|
||||
// Bail out early if something's wrong with the social profiles, let's not add any more confusion there.
|
||||
if ( ! \is_array( $social_profile_fields ) ) {
|
||||
return $social_profile_fields;
|
||||
}
|
||||
$social_profile_fields['mastodon_url'] = 'get_non_valid_url';
|
||||
|
||||
return $social_profile_fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds Mastodon to the list of social profiles to add to a Person's Schema.
|
||||
*
|
||||
* @param array $social_profiles The social profiles array.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function add_mastodon_to_person_schema( $social_profiles ) {
|
||||
// Bail out early if something's wrong with the social profiles, let's not add any more confusion there.
|
||||
if ( ! \is_array( $social_profiles ) ) {
|
||||
return $social_profiles;
|
||||
}
|
||||
$social_profiles[] = 'mastodon';
|
||||
|
||||
return $social_profiles;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds Mastodon to the list of contact methods for persons.
|
||||
*
|
||||
* @param array $contactmethods Currently set contactmethods.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function add_mastodon_to_user_contactmethods( $contactmethods ) {
|
||||
// Bail out early if something's wrong with the contact methods, let's not add any more confusion there.
|
||||
if ( ! \is_array( $contactmethods ) ) {
|
||||
return $contactmethods;
|
||||
}
|
||||
|
||||
$contactmethods['mastodon'] = \__( 'Mastodon profile URL', 'wordpress-seo-premium' );
|
||||
|
||||
return $contactmethods;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the Mastodon field is filled in.
|
||||
*
|
||||
* @param bool $state The current state of the integration.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function check_mastodon_active( $state ) {
|
||||
switch ( $this->options_helper->get( 'company_or_person', false ) ) {
|
||||
case 'company':
|
||||
$social_profiles = $this->social_profiles_helper->get_organization_social_profiles();
|
||||
if ( ! empty( $social_profiles['mastodon_url'] ) ) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'person':
|
||||
$company_or_person_id = $this->options_helper->get( 'company_or_person_user_id', 0 );
|
||||
$social_profiles = $this->social_profiles_helper->get_person_social_profiles( $company_or_person_id );
|
||||
if ( ! empty( $social_profiles['mastodon'] ) ) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return $state;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user