PluginProbe
Gianism / 3.0.1
Gianism v3.0.1
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
← All changes | functions.php +253 -66 1.13.0.1 View file →
@@ -1,50 +1,174 @@
1 1 <?php
2 +/**
3 + * Global functions for Gianism.
4 + *
5 + * @package Gianism
6 + * @since 1.0
7 + * @author Takahashi Fumiki
8 + */
2 9
10 +
3 11 /**
4 12 * Returns Facebook ID
5 - * @global WP_Gianism $gianism
13 + *
14 + * @since 3.0.0
15 + *
6 16 * @param int $user_id
17 + *
18 + * @return mixed
19 + */
20 +function gianism_get_facebook_id( $user_id ) {
21 + /** @var \Gianism\Service\Facebook $facebook */
22 + $facebook = \Gianism\Service\Facebook::get_instance();
23 +
24 + return get_user_meta( $user_id, $facebook->umeta_id, true );
25 +}
26 +
27 +
28 +/**
29 + * Returns url to get Publish stream permission
30 + *
31 + * This function itself has no effect without action hook.
32 + * See example below:
33 + *
34 + * <pre>
35 + * // In some template, display button.
36 + * get_facebook_publish_permission_link(get_permalink(), 'my_favorite_action', array('post_id' => get_the_ID()));
37 + *
38 + * // Then, hook action in functions.php in your theme.
39 + * add_action('my_favorite_action', 'my_publish_action');
40 + *
41 + * function my_publish_action($facebook, $args){
42 + * $post = get_post($args['post_id']);
43 + * try{
44 + * $facebook->api("/me/feed", "POST", array(
45 + * "message" => "I read this article!",
46 + * "link" => get_permalink($post->ID),
47 + * "name" => get_the_title($post->ID),
48 + * "description" => strip_tags($post->post_content),
49 + * "action" => json_encode(array(
50 + * "name" => get_bloginfo('name'),
51 + * "link" => home_url('/')))
52 + * ));
53 + * }catch(FacebookApiException $e){
54 + * // Error
55 + * wp_die($e->getMessage());
56 + * }
57 + * }
58 + * </pre>
59 + *
60 + * @since 3.0.0
61 + *
62 + * @param string $redirect_url URL where user will be redirect after authentication
63 + * @param string $action Action name which will be fired after authentication
64 + * @param array $args Array which will be passed to action hook
65 + *
7 66 * @return string
8 67 */
9 -function get_facebook_id($user_id){
10 - global $gianism;
11 - return get_user_meta($user_id, '_wpg_facebook_id', true);
68 +function gianism_get_facebook_publish_permission_link( $redirect_url = null, $action = '', $args = [] ) {
69 + /** @var \Gianism\Service\Facebook $facebook */
70 + $facebook = \Gianism\Service\Facebook::get_instance();
71 +
72 + return $facebook->get_publish_permission_link( $redirect_url, $action, $args );
12 73 }
13 74
14 75 /**
76 + * Get facebook API client for admin
77 + *
78 + * <pre>
79 + * $fb = gianism_fb_admin();
80 + * if( !is_wp_error($fb) ){
81 + * // Get feed.
82 + * $feeds = $fb->api('/me/feed');
83 + * // Post feed.
84 + * $fb->api('/me/feed', 'POST', array(
85 + * 'message' => 'Hola!',
86 + * ));
87 + * }
88 + * </pre>
89 + *
90 + * @return \Facebook\Facebook|WP_Error
91 + */
92 +function gianism_fb_admin() {
93 + /** @var \Gianism\Service\Facebook $facebook */
94 + $facebook = \Gianism\Service\Facebook::get_instance();
95 +
96 + return $facebook->admin;
97 +}
98 +
99 +/**
100 + * Get admin facebook id
101 + *
102 + * This will be user id or facebook page id.
103 + *
104 + * <pre>
105 + * // Example
106 + * $fb = gianism_fb_admin();
107 + * if( !is_wp_error($fb) ){
108 + * $feed = $fb->api(gianism_fb_admin_id().'/feed');
109 + * foreach( $feed['data'] as $status ){
110 + * // Do stuff.
111 + * }
112 + * }
113 + * </pre>
114 + *
115 + * @return int|string
116 + */
117 +function gianism_fb_admin_id() {
118 + /** @var \Gianism\Service\Facebook $facebook */
119 + $facebook = \Gianism\Service\Facebook::get_instance();
120 +
121 + return $facebook->admin_id;
122 +}
123 +
124 +/**
15 125 * Returns if user is connected with particular web service.
16 - * @global int $user_ID
17 - * @param string $service
18 - * @return boolean
126 + *
127 + * @since 3.0.0
128 + *
129 + * @param string $service One of facebook, mixi, yahoo, twitter or google.
130 + * @param int $user_id If not specified, current user id will be used.
131 + *
132 + * @return boolean
19 133 */
20 -function is_user_connected_with($service){
21 - global $user_ID;
22 - switch($service){
23 - case 'facebook':
24 - return (boolean) get_facebook_id($user_ID);
25 - break;
26 - default:
27 - return false;
28 - break;
134 +function gianism_is_user_connected_with( $service, $user_id = 0 ) {
135 + /** @var \Gianism\Bootstrap $gianism */
136 + $gianism = \Gianism\Bootstrap::get_instance();
137 + if ( ! $user_id ) {
138 + $user_id = get_current_user_id();
29 139 }
140 +
141 + return ( $instance = $gianism->get_service_instance( $service ) ) && $instance->is_connected( $user_id );
30 142 }
31 143
144 +
32 145 /**
33 - * Get user object by credencial
34 - * @global wpdb $wpdb
146 + * Get user object by credential
147 + *
148 + * Only facebook is supported.
149 + *
150 + * @todo Make other services to work.
151 + * @since 3.0.0
152 + * @global \wpdb $wpdb
35 153 * @param string $service
36 154 * @param mixed $credential
37 - * @return Object
155 + *
156 + * @return \WP_User
38 157 */
39 -function get_user_by_service($service, $credential){
158 +function gianism_get_user_by_service( $service, $credential ) {
40 159 global $wpdb;
41 - switch($service){
160 + $gianism = \Gianism\Bootstrap::get_instance();
161 + $instance = $gianism->get_instance( $service );
162 + if ( ! $instance ) {
163 + return false;
164 + }
165 + switch ( $service ) {
42 166 case 'facebook':
43 - $user_id = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = 'wpg_facebook_id' AND meta_value = %s", $credential));
44 - if($user_id){
45 - return new WP_User($user_id);
46 - }else{
167 + $user_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = '{$instance->umeta_id}' AND meta_value = %s", $credential ) );
168 + if ( $user_id ) {
169 + return new WP_User( $user_id );
170 + } else {
47 171 return null;
48 172 }
49 173 break;
50 174 default:
@@ -53,60 +177,123 @@
53 177 }
54 178 }
55 179
56 180 /**
57 - * Returns if current user liked or not.
58 - *
59 - * You can this function only on Facebook fan page tab.
60 - *
61 - * @global WP_Gianism $gianism
62 - * @return boolean
181 + * Get Twitter Screen Name
182 + *
183 + * @since 3.0.0
184 + *
185 + * @param int $user_id
186 + *
187 + * @return string|false
63 188 */
64 -function is_user_like_fangate(){
65 - global $gianism;
66 - return $gianism->fb->is_user_like_me_on_fangate();
189 +function gianism_get_twitter_screen_name( $user_id ) {
190 + /** @var \Gianism\Service\Twitter $twitter */
191 + $twitter = \Gianism\Service\Twitter::get_instance();
192 +
193 + return get_user_meta( $user_id, $twitter->umeta_screen_name, true );
67 194 }
68 195
196 +
69 197 /**
70 - * Returns if current user is guest.
71 - * @global WP_Gianism $gianism
198 + * Update Twitter time line
199 + *
200 + * @since 3.0.0
201 + *
202 + * @param string $string
203 + */
204 +function gianism_update_twitter_status( $string ) {
205 + /** @var \Gianism\Service\Twitter $twitter */
206 + $twitter = \Gianism\Service\Twitter::get_instance();
207 + $twitter->tweet( $string );
208 +}
209 +
210 +/**
211 + * Reply to specified user by Owner Account
212 + *
213 + * @since 3.0.0
214 + *
215 + * @param int $user_id
216 + * @param string $string
217 + *
72 218 * @return boolean
73 219 */
74 -function is_guest_on_fangate(){
75 - global $gianism;
76 - return $gianism->fb->is_guest_on_fangate();
220 +function gianism_twitter_reply_to( $user_id, $string ) {
221 + $screen_name = gianism_get_twitter_screen_name( $user_id );
222 + if ( $screen_name ) {
223 + gianism_update_twitter_status( "@{$screen_name} " . $string );
224 + return true;
225 + } else {
226 + return false;
227 + }
77 228 }
78 229
79 230 /**
80 - * Returns if current user has wordpress account.
81 - *
82 - * You can this function only on Facebook fan page tab.
83 - *
84 - * @global WP_Gianism $gianism
85 - * @return boolean
231 + * Get twitter time line in JSON format object
232 + *
233 + * Caching is recommended.
234 + *
235 + * <pre>
236 + * $timeline = get_transient('twitter_timeline');
237 + * if( false === $timeline){
238 + * $timeline = twitter_get_timeline('my_screen_name');
239 + * set_transient('twitter_timeline', $timeline, 3600);
240 + * }
241 + * foreach($timeline as $status){
242 + * // Echo status
243 + * }
244 + * </pre>
245 + *
246 + * @since 3.0.0
247 + *
248 + * @param string $screen_name If not specified, admin user's screen name will be used.
249 + * @param array $additional_data
250 + *
251 + * @return object JSON format object.
86 252 */
87 -function is_user_registered_with($service){
88 - global $gianism, $wpdb;
89 - switch($service){
90 - case 'facebook':
91 - $user_id = get_user_id_on_fangate();
92 - $sql = <<<EOS
93 - SELECT user_id FROM {$wpdb->usermeta}
94 - WHERE meta_key = 'wpg_facebook_id' AND meta_value = %s
95 -EOS;
96 - return $wpdb->get_var($wpdb->prepare($sql, $signed['user_id']));
97 - break;
98 - default:
99 - return false;
100 - break;
253 +function gianism_twitter_get_timeline( $screen_name = null, array $additional_data = [] ) {
254 + /** @var \Gianism\Service\Twitter $twitter */
255 + $twitter = \Gianism\Service\Twitter::get_instance();
256 + if ( is_null( $screen_name ) ) {
257 + $screen_name = $twitter->tw_screen_name;
101 258 }
259 +
260 + return $twitter->call_api( 'statuses/user_timeline', array_merge(
261 + array( 'screen_name' => $screen_name ),
262 + $additional_data
263 + ) );
102 264 }
103 265
266 +
104 267 /**
105 - * Returns facebook id on fan gate.
106 - * @global WP_Gianism $gianism
107 - * @return stiring|boolean
268 + * Show Login buttons
269 + *
270 + * Show login buttons where you want.
271 + *
272 + * @since 1.0
273 + *
274 + * @param string $before
275 + * @param string $after
276 + * @param string $redirect_to
108 277 */
109 -function get_user_id_on_fangate(){
110 - global $gianism;
111 - return $gianism->fb->is_registered_user_on_fangate();
112 -}
278 +function gianism_login( $before = '', $after = '', $redirect_to = '' ) {
279 + /** @var \Gianism\Controller\Login $login */
280 + $login = \Gianism\Controller\Login::get_instance();
281 + $login->login_form( $before, $after, false, $redirect_to );
282 +}
283 +
284 +/**
285 + * Add UTM campaign link to WordPress admin
286 + *
287 + * @param string $url
288 + * @param array $args
289 + *
290 + * @return string
291 + */
292 +function gianism_utm_link( $url, $args = [] ) {
293 + $args = wp_parse_args( $args, [
294 + 'utm_source' => 'wp-admin',
295 + 'utm_medium' => 'link',
296 + 'utm_campaign' => 'Plugin User',
297 + ] );
298 + return add_query_arg( $args, $url );
299 +}