PluginProbe
Gianism / 3.0.6
Gianism v3.0.6
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.php

functions.php in Gianism 3.0.6, at functions.php

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