umeta_id, true ); } /** * Returns url to get Publish stream permission * * This function itself has no effect without action hook. * See example below: * *
 * // In some template, display button.
 * get_facebook_publish_permission_link(get_permalink(), 'my_favorite_action', array('post_id' => get_the_ID()));
 *
 * // Then, hook action in functions.php in your theme.
 * add_action('my_favorite_action', 'my_publish_action');
 *
 * function my_publish_action($facebook, $args){
 *      $post = get_post($args['post_id']);
 *      try{
 *          $facebook->api("/me/feed", "POST", array(
 *          "message" => "I read this article!",
 *          "link" => get_permalink($post->ID),
 *          "name" => get_the_title($post->ID),
 *          "description" => strip_tags($post->post_content),
 *          "action" => json_encode(array(
 *              "name" => get_bloginfo('name'),
 *              "link" => home_url('/')))
 *          ));
 *      }catch(FacebookApiException $e){
 *          // Error
 *          wp_die($e->getMessage());
 *       }
 * }
 * 
* * @since 3.0.0 * @package Gianism * * @param string $redirect_url URL where user will be redirect after authentication * @param string $action Action name which will be fired after authentication * @param array $args Array which will be passed to action hook * * @return string */ function gianism_get_facebook_publish_permission_link( $redirect_url = null, $action = '', $args = [] ) { /** @var \Gianism\Service\Facebook $facebook */ $facebook = \Gianism\Service\Facebook::get_instance(); return $facebook->get_publish_permission_link( $redirect_url, $action, $args ); } /** * Get facebook API client for admin * *
 * $fb = gianism_fb_admin();
 * if( !is_wp_error($fb) ){
 *     // Get feed.
 *     $feeds = $fb->api('/me/feed');
 *     // Post feed.
 *     $fb->api('/me/feed', 'POST', array(
 *         'message' => 'Hola!',
 *     ));
 * }
 * 
* * @package Gianism * @since 3.0.0 * @return \Facebook\Facebook|WP_Error */ function gianism_fb_admin() { /** @var \Gianism\Service\Facebook $facebook */ $facebook = \Gianism\Service\Facebook::get_instance(); return $facebook->admin; } /** * Get currently set page API * * @package Gianism * @since 3.0.6 * @return \Facebook\Facebook|WP_Error */ function gianism_fb_page_api() { return \Gianism\Service\Facebook::get_instance()->get_current_page_api(); } /** * Get admin facebook id * * This will be user id or facebook page id. * *
 * // Example
 * $fb = gianism_fb_admin();
 * if( !is_wp_error($fb) ){
 *     $feed = $fb->api(gianism_fb_admin_id().'/feed');
 *     foreach( $feed['data'] as $status ){
 *         // Do stuff.
 *     }
 * }
 * 
* * @package Gianism * @since 3.0.0 * @return int|string */ function gianism_fb_admin_id() { /** @var \Gianism\Service\Facebook $facebook */ $facebook = \Gianism\Service\Facebook::get_instance(); return $facebook->admin_id; } /** * Returns if user is connected with particular web service. * * @package Gianism * @since 3.0.0 * * @param string $service One of facebook, mixi, yahoo, twitter or google. * @param int $user_id If not specified, current user id will be used. * * @return boolean */ function gianism_is_user_connected_with( $service, $user_id = 0 ) { /** @var \Gianism\Bootstrap $gianism */ $gianism = \Gianism\Bootstrap::get_instance(); if ( ! $user_id ) { $user_id = get_current_user_id(); } return ( $instance = $gianism->service->get( $service ) ) && $instance->is_connected( $user_id ); } /** * Get user object by credential * * Only facebook is supported. * * @todo Make other services to work. * @package Gianism * @since 3.0.0 * @global \wpdb $wpdb * @param string $service * @param mixed $credential * * @return \WP_User */ function gianism_get_user_by_service( $service, $credential ) { global $wpdb; $gianism = \Gianism\Bootstrap::get_instance(); $instance = $gianism->service->get( $service ); if ( ! $instance ) { return false; } switch ( $service ) { case 'facebook': $user_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = '{$instance->umeta_id}' AND meta_value = %s", $credential ) ); if ( $user_id ) { return new WP_User( $user_id ); } else { return null; } break; default: return null; break; } } /** * Get Twitter Screen Name * * @package Gianism * @since 3.0.0 * * @param int $user_id * * @return string|false */ function gianism_get_twitter_screen_name( $user_id ) { /** @var \Gianism\Service\Twitter $twitter */ $twitter = \Gianism\Service\Twitter::get_instance(); return get_user_meta( $user_id, $twitter->umeta_screen_name, true ); } /** * Update Twitter time line * * @package Gianism * @since 3.0.0 * * @param string $string * @return bool */ function gianism_update_twitter_status( $string ) { /** @var \Gianism\Service\Twitter $twitter */ $twitter = \Gianism\Service\Twitter::get_instance(); $response = $twitter->tweet( $string ); return ! $response->errors; } /** * Reply to specified user by Owner Account * * @package Gianism * @since 3.0.0 * * @param int $user_id * @param string $string * * @return boolean */ function gianism_twitter_reply_to( $user_id, $string ) { $screen_name = gianism_get_twitter_screen_name( $user_id ); if ( $screen_name ) { gianism_update_twitter_status( "@{$screen_name} " . $string ); return true; } else { return false; } } /** * Get twitter time line in JSON format object * * Caching is recommended. * *
 * $timeline = get_transient('twitter_timeline');
 * if( false === $timeline){
 *     $timeline = twitter_get_timeline('my_screen_name');
 *     set_transient('twitter_timeline', $timeline, 3600);
 * }
 * foreach($timeline as $status){
 *     // Echo status
 * }
 * 
* * @package Gianism * @since 3.0.0 * * @param string $screen_name If not specified, admin user's screen name will be used. * @param array $additional_data * * @return object JSON format object. */ function gianism_twitter_get_timeline( $screen_name = null, array $additional_data = [] ) { /** @var \Gianism\Service\Twitter $twitter */ $twitter = \Gianism\Service\Twitter::get_instance(); if ( is_null( $screen_name ) ) { $screen_name = $twitter->tw_screen_name; } return $twitter->call_api( 'statuses/user_timeline', array_merge( array( 'screen_name' => $screen_name ), $additional_data ) ); } /** * Show Login buttons * * Show login buttons where you want. * * @package Gianism * @since 1.0 * * @param string $before * @param string $after * @param string $redirect_to */ function gianism_login( $before = '', $after = '', $redirect_to = '' ) { /** @var \Gianism\Controller\Login $login */ $login = \Gianism\Controller\Login::get_instance(); $login->login_form( $before, $after, false, $redirect_to ); } /** * Add UTM campaign link to WordPress admin * * @package Gianism * @since 3.0.0 * @internal * @param string $url * @param array $args * * @return string */ function gianism_utm_link( $url, $args = [] ) { $args = wp_parse_args( $args, [ 'utm_source' => 'wp-admin', 'utm_medium' => 'link', 'utm_campaign' => 'Plugin User', ] ); return add_query_arg( $args, $url ); } /** * Detect if WooCommerce is activated * * @package Gianism * @since 3.0.5 * @return bool */ function gianism_woocommerce_detected() { return class_exists( 'WooCommerce' ); }