SocialProfiles.php
4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
namespace AIOSEO\Plugin\Common\Schema\Graphs\Traits;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Trait that handles the social profiles.
*
* @since 4.2.2
*/
trait SocialProfiles {
/**
* List of base URLs.
*
* @since 4.2.2
*
* @var array
*/
private $baseUrls = [
'facebookPageUrl' => 'https://facebook.com/',
'twitterUrl' => 'https://twitter.com/',
'instagramUrl' => 'https://instagram.com/',
'pinterestUrl' => 'https://pinterest.com/',
'youtubeUrl' => 'https://youtube.com/',
'linkedinUrl' => 'https://linkedin.com/in/',
'tumblrUrl' => 'https://tumblr.com/',
'yelpPageUrl' => 'https://yelp.com/biz/',
'soundCloudUrl' => 'https://soundcloud.com/',
'wikipediaUrl' => 'https://en.wikipedia.org/wiki/',
'myspaceUrl' => 'https://myspace.com/'
];
/**
* Returns the profiles of the organization, set under Social Networks.
*
* @since 4.2.2
*
* @return array List of social profiles.
*/
protected function getOrganizationProfiles() {
$socialProfiles = [
'facebookPageUrl' => aioseo()->options->social->profiles->urls->facebookPageUrl,
'twitterUrl' => aioseo()->options->social->profiles->urls->twitterUrl,
'instagramUrl' => aioseo()->options->social->profiles->urls->instagramUrl,
'pinterestUrl' => aioseo()->options->social->profiles->urls->pinterestUrl,
'youtubeUrl' => aioseo()->options->social->profiles->urls->youtubeUrl,
'linkedinUrl' => aioseo()->options->social->profiles->urls->linkedinUrl,
'tumblrUrl' => aioseo()->options->social->profiles->urls->tumblrUrl,
'yelpPageUrl' => aioseo()->options->social->profiles->urls->yelpPageUrl,
'soundCloudUrl' => aioseo()->options->social->profiles->urls->soundCloudUrl,
'wikipediaUrl' => aioseo()->options->social->profiles->urls->wikipediaUrl,
'myspaceUrl' => aioseo()->options->social->profiles->urls->myspaceUrl
];
if ( aioseo()->options->social->profiles->sameUsername->enable ) {
$username = aioseo()->options->social->profiles->sameUsername->username;
$includedPlatforms = aioseo()->options->social->profiles->sameUsername->included;
foreach ( $this->baseUrls as $platformKey => $baseUrl ) {
if ( ! in_array( $platformKey, $includedPlatforms, true ) ) {
continue;
}
$socialProfiles[ $platformKey ] = $baseUrl . $username;
}
}
if ( aioseo()->options->social->profiles->additionalUrls ) {
$additionalUrls = preg_split( '/\n|\r|\r\n/', aioseo()->options->social->profiles->additionalUrls );
$socialProfiles = array_merge( $socialProfiles, $additionalUrls );
}
if ( ! aioseo()->options->social->facebook->general->showAuthor ) {
unset( $socialProfiles['facebookPageUrl'] );
}
if ( ! aioseo()->options->social->twitter->general->showAuthor ) {
unset( $socialProfiles['twitterUrl'] );
}
return array_values( array_filter( $socialProfiles ) );
}
/**
* Returns the profiles of the given user, set under the User Profile.
*
* @since 4.2.2
*
* @param int $userId The user ID.
* @return array List of social profiles.
*/
protected function getUserProfiles( $userId ) {
$socialProfiles = $this->baseUrls;
foreach ( $socialProfiles as $platformKey => $v ) {
$metaName = 'aioseo_' . aioseo()->helpers->toSnakeCase( $platformKey );
$socialProfiles[ $platformKey ] = get_user_meta( $userId, $metaName, true );
}
$sameUsernameData = get_user_meta( $userId, 'aioseo_profiles_same_username', true );
if ( is_array( $sameUsernameData ) && (bool) $sameUsernameData['enable'] ) {
foreach ( $this->baseUrls as $platform => $baseUrl ) {
if ( ! in_array( $platform, $sameUsernameData['included'], true ) ) {
continue;
}
$socialProfiles[ $platform ] = $baseUrl . $sameUsernameData['username'];
}
}
$additionalUrls = get_user_meta( $userId, 'aioseo_profiles_additional_urls', true );
if ( $additionalUrls ) {
$additionalUrls = preg_split( '/\n|\r|\r\n/', $additionalUrls );
foreach ( $additionalUrls as $additionalUrl ) {
// We need to set a random key because otherwise we'll override the ones from the organization.
$socialProfiles[ uniqid() ] = $additionalUrl;
}
}
if ( ! aioseo()->options->social->facebook->general->showAuthor ) {
unset( $socialProfiles['facebookPageUrl'] );
}
if ( ! aioseo()->options->social->twitter->general->showAuthor ) {
unset( $socialProfiles['twitterUrl'] );
}
return array_values( array_filter( $socialProfiles ) );
}
}