PluginProbe
Gianism / trunk
Gianism vtrunk
4.3.0 4.3.1 4.3.2 4.3.3 4.3.4 4.4.0 5.0.0 5.0.1 5.0.2 5.1.0 5.2.1 5.2.2 5.3.0 6.0.0 6.0.1 trunk 1.0 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 All 65 releases
gianism / functions / twitter.php

twitter.php in Gianism trunk, at functions/twitter.php

155 lines 3.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Twitter related functions
4 *
5 * @package Gianism
6 */
7
8
9
10
11 /**
12 * Get Twitter Screen Name
13 *
14 * @package Gianism
15 * @since 3.0.0
16 *
17 * @param int $user_id
18 *
19 * @return string|false
20 */
21 function gianism_get_twitter_screen_name( $user_id ) {
22 /** @var \Gianism\Service\Twitter $twitter */
23 $twitter = \Gianism\Service\Twitter::get_instance();
24
25 return get_user_meta( $user_id, $twitter->umeta_screen_name, true );
26 }
27
28
29 /**
30 * Update Twitter time line
31 *
32 * @param string $text Tweet string.
33 * @param int|null|string $media If set, tweet with media.
34 * @param array $options Options.
35 *
36 * @return bool
37 * @since 3.0.0
38 * @see https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets
39 *
40 * @package Gianism
41 */
42 function gianism_update_twitter_status( $text, $media = null, $options = [] ) {
43 /** @var \Gianism\Service\Twitter $twitter */
44 $twitter = \Gianism\Service\Twitter::get_instance();
45 if ( $media ) {
46 $media_id = $twitter->upload( $media );
47 if ( is_wp_error( $media_id ) ) {
48 return false;
49 }
50 if ( ! isset( $options['media'] ) ) {
51 $options['media'] = [];
52 }
53 $options['media']['media_ids'] = [ $media_id ];
54 }
55 $response = $twitter->tweet( $text, null, $options );
56 return ! is_wp_error( $response );
57 }
58
59 /**
60 * Reply to specified user by Owner Account
61 *
62 * @param int $user_id
63 * @param string $text
64 *
65 * @return boolean
66 * @since 3.0.0
67 *
68 * @package Gianism
69 */
70 function gianism_twitter_reply_to( $user_id, $text ) {
71 $screen_name = gianism_get_twitter_screen_name( $user_id );
72 if ( $screen_name ) {
73 gianism_update_twitter_status( "@{$screen_name} " . $text );
74 return true;
75 } else {
76 return false;
77 }
78 }
79
80 /**
81 * Get twitter time line in JSON format object
82 *
83 * Caching is recommended.
84 *
85 * <pre>
86 * $timeline = get_transient('twitter_timeline');
87 * if( false === $timeline){
88 * $timeline = twitter_get_timeline('my_screen_name');
89 * set_transient('twitter_timeline', $timeline, 3600);
90 * }
91 * foreach($timeline as $status){
92 * // Echo status
93 * }
94 * </pre>
95 *
96 * @package Gianism
97 * @since 5.1.0
98 *
99 * @todo Requires basic plan of Twitter API.
100 * @param string $screen_name If not specified, admin user's screen name will be used.
101 * @param array $additional_data
102 *
103 * @return object|WP_Error JSON format object.
104 */
105 function gianism_twitter_get_timeline( $screen_name = '', array $additional_data = [] ) {
106 /** @var \Gianism\Service\Twitter $twitter */
107 $twitter = \Gianism\Service\Twitter::get_instance();
108 $user_id = gianism_get_twitter_user_id( $screen_name );
109 if ( is_wp_error( $user_id ) ) {
110 return $user_id;
111 }
112 try {
113 return $twitter->call_api( "users/{$user_id}/tweets", [] );
114 } catch ( \Exception $e ) {
115 return new WP_Error(
116 'twitter_api_error',
117 $e->getMessage(),
118 [
119 'code' => $e->getCode(),
120 ]
121 );
122 }
123 }
124
125 /**
126 * Convert screen name to user id.
127 *
128 * @param string $screen_name twitter screen name.
129 * @return WP_Error|string
130 */
131 function gianism_get_twitter_user_id( $screen_name = '' ) {
132 /** @var \Gianism\Service\Twitter $twitter */
133 $twitter = \Gianism\Service\Twitter::get_instance();
134 if ( ! $screen_name ) {
135 $endpoint = 'users/me';
136 } else {
137 $endpoint = 'users/by/username/' . rawurlencode( $screen_name );
138 }
139 try {
140 $response = $twitter->call_api( $endpoint, [] );
141 if ( is_wp_error( $response ) ) {
142 return $response;
143 }
144 return $response->data->id;
145 } catch ( \Exception $e ) {
146 return new WP_Error(
147 'twitter_api_error',
148 $e->getMessage(),
149 [
150 'code' => $e->getCode(),
151 ]
152 );
153 }
154 }
155