Exemplo n.º 1
0
 function test_delete_user_social_profile()
 {
     $insert_id = wsl_store_hybridauth_user_profile($this->someUserID, $this->someUserIDP, $this->someUserProfile);
     $profile = (array) wsl_get_stored_hybridauth_user_profiles_by_user_id($this->someUserID);
     $this->assertEquals(1, count($profile));
     wp_delete_user($this->someUserID);
     $profile = (array) wsl_get_stored_hybridauth_user_profiles_by_user_id($this->someUserID);
     $this->assertEquals(0, count($profile));
 }
/**
* WSL wordpress_social_login_meta shortcode
*
* Note:
*   This shortcode is experimental and might change in future versions.
*
*   [wordpress_social_login_meta
*        user_id="215"
*        meta="wsl_current_user_image"
*        display="html"
*        css_class="my_style_is_better"
*   ]
*/
function wsl_shortcode_wordpress_social_login_meta($args = array())
{
    // wordpress user id default to current user connected
    $user_id = isset($args['user_id']) && $args['user_id'] ? $args['user_id'] : get_current_user_id();
    // display default to plain text
    $display = isset($args['display']) && $args['display'] ? $args['display'] : 'plain';
    // when display is set to html, css_class will be used for the main dom el
    $css_class = isset($args['css_class']) && $args['css_class'] ? $args['css_class'] : '';
    // wsl user meta to display
    $meta = isset($args['meta']) && $args['meta'] ? $args['meta'] : null;
    if (!is_numeric($user_id)) {
        return;
    }
    if (!$meta) {
        return;
    }
    $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . 'assets/img/16x16/';
    $assets_base_url = isset($args['assets_base_url']) && $args['assets_base_url'] ? $args['assets_base_url'] : $assets_base_url;
    $return = '';
    if ('current_avatar' == $meta) {
        if ('plain' == $display) {
            $return = wsl_get_user_custom_avatar($user_id);
        } else {
            $return = '<img class="wordpress_social_login_meta_user_avatar ' . $css_class . '" src="' . wsl_get_user_custom_avatar($user_id) . '" />';
        }
    }
    if ('current_provider' == $meta) {
        $provider = get_user_meta($user_id, 'wsl_current_provider', true);
        if ('plain' == $display) {
            $return = $provider;
        } else {
            $return = '<img class="wordpress_social_login_meta_user_provider ' . $css_class . '" src="' . $assets_base_url . strtolower($provider) . '.png"> ' . $provider;
        }
    }
    if ('user_identities' == $meta) {
        ob_start();
        $linked_accounts = wsl_get_stored_hybridauth_user_profiles_by_user_id($user_id);
        if ($linked_accounts) {
            ?>
<table class="wp-social-login-linked-accounts-list <?php 
            echo $css_class;
            ?>
"><?php 
            foreach ($linked_accounts as $item) {
                $identity = $item->profileurl;
                $photourl = $item->photourl;
                if (!$identity) {
                    $identity = $item->identifier;
                }
                ?>
<tr><td><?php 
                if ($photourl) {
                    ?>
<img  style="vertical-align: top;width:16px;height:16px;" src="<?php 
                    echo $photourl;
                    ?>
"> <?php 
                } else {
                    ?>
<img src="<?php 
                    echo $assets_base_url . strtolower($item->provider) . '.png';
                    ?>
" /> <?php 
                }
                echo ucfirst($item->provider);
                ?>
 </td><td><?php 
                echo $identity;
                ?>
</td></tr><?php 
                echo "\n";
            }
            ?>
</table><?php 
        }
        $return = ob_get_clean();
        if ('plain' == $display) {
            $return = strip_tags($return);
        }
    }
    return $return;
}
function wsl_component_users_list()
{
    // HOOKABLE:
    do_action("wsl_component_users_list_start");
    $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . 'assets/img/16x16/';
    add_thickbox();
    wsl_component_users_delete_social_profiles();
    $actions = array('edit_details' => '<a class="button button-secondary thickbox" href="' . admin_url('users.php?TB_iframe=true&width=1050&height=550') . '">' . _wsl__('View all your website users', 'wordpress-social-login') . '</a>');
    // HOOKABLE:
    $actions = apply_filters('wsl_component_users_list_alter_actions_list', $actions);
    ?>
<div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
	<p style="float: <?php 
    if (is_rtl()) {
        echo 'left';
    } else {
        echo 'right';
    }
    ?>
; margin: -5px;">
		<?php 
    echo implode(' ', $actions);
    ?>
	</p>

	<!--
	Postponed to future versions

		<form method="post">
			<select name="provider" style="vertical-align: unset;">
				<option value=""><?php 
    _wsl_e("Provider", 'wordpress-social-login');
    ?>
</option>
			</select>
			<input type="text" value="" name="username" placeholder="<?php 
    _wsl_e("Username", 'wordpress-social-login');
    ?>
" style="height: 28px;">
			<input type="submit" value="Filter" class="button">
		</form>
	-->

	<?php 
    _wsl_e("This screen only list the users who have connected through WordPress Social Login", 'wordpress-social-login');
    ?>
.
</div>
<?php 
    $pagenum = isset($_GET['pagenum']) ? absint($_GET['pagenum']) : 1;
    $limit = 25;
    // number of rows in page
    $offset = ($pagenum - 1) * $limit;
    $total = wsl_get_stored_hybridauth_user_profiles_count();
    $num_of_pages = ceil($total / $limit);
    $users_list = wsl_get_stored_hybridauth_user_profiles_grouped_by_user_id($offset, $limit);
    ?>
<table cellspacing="0" class="wp-list-table widefat fixed users">
	<thead>
		<tr>
			<th width="100"><span><?php 
    _wsl_e("Providers", 'wordpress-social-login');
    ?>
</span></th>
			<th><span><?php 
    _wsl_e("Username", 'wordpress-social-login');
    ?>
</span></th>
			<th><span><?php 
    _wsl_e("Full Name", 'wordpress-social-login');
    ?>
</span></th>
			<th><span><?php 
    _wsl_e("E-mail", 'wordpress-social-login');
    ?>
</span></th>
			<th><span><?php 
    _wsl_e("Profile URL", 'wordpress-social-login');
    ?>
</span></th>
			<th width="80"><span><?php 
    _wsl_e("Contacts", 'wordpress-social-login');
    ?>
</span></th>
			<th width="55"><span><?php 
    _wsl_e("User ID", 'wordpress-social-login');
    ?>
</span></th>
		</tr>
	</thead>
	<tfoot>
		<tr>
			<th width="100"><span><?php 
    _wsl_e("Providers", 'wordpress-social-login');
    ?>
</span></th>
			<th><span><?php 
    _wsl_e("Username", 'wordpress-social-login');
    ?>
</span></th>
			<th><span><?php 
    _wsl_e("Full Name", 'wordpress-social-login');
    ?>
</span></th>
			<th><span><?php 
    _wsl_e("E-mail", 'wordpress-social-login');
    ?>
</span></th>
			<th><span><?php 
    _wsl_e("Profile URL", 'wordpress-social-login');
    ?>
</span></th>
			<th width="80"><span><?php 
    _wsl_e("Contacts", 'wordpress-social-login');
    ?>
</span></th>
			<th width="55"><span><?php 
    _wsl_e("User ID", 'wordpress-social-login');
    ?>
</span></th>
		</tr>
	</tfoot>
	<tbody data-wp-lists="list:user" id="the-list">
		<?php 
    $i = 0;
    // have users?
    if (!$users_list) {
        ?>
					<tr class="no-items"><td colspan="5" class="colspanchange"><?php 
        _wsl_e("No users found", 'wordpress-social-login');
        ?>
.</td></tr>
				<?php 
    } else {
        foreach ($users_list as $items) {
            $user_id = $items->user_id;
            $wsl_user_image = $items->photourl;
            $user_data = get_userdata($user_id);
            if (!$user_data) {
                continue;
            }
            $linked_accounts = wsl_get_stored_hybridauth_user_profiles_by_user_id($user_id);
            ?>
				<tr class="<?php 
            if (++$i % 2) {
                echo "alternate";
            }
            ?>
 tr-contacts">
					<td nowrap>
						<?php 
            foreach ($linked_accounts as $link) {
                ?>
									<img src="<?php 
                echo $assets_base_url . strtolower($link->provider) . '.png';
                ?>
" style="vertical-align:top;width:16px;height:16px;" /> <?php 
                _wsl_e($link->provider, 'wordpress-social-login');
                ?>
<br />
								<?php 
                if ($link->photourl) {
                    $wsl_user_image = $link->photourl;
                }
            }
            ?>
					</td>
					<td class="column-author">
						<?php 
            if ($wsl_user_image) {
                ?>
							<img width="32" height="32" class="avatar avatar-32 photo" src="<?php 
                echo $wsl_user_image;
                ?>
" >
						<?php 
            } else {
                ?>
							<img width="32" height="32" class="avatar avatar-32 photo" src="http://www.gravatar.com/avatar/<?php 
                echo md5(strtolower(trim($user_data->user_email)));
                ?>
" >
						<?php 
            }
            ?>

						<strong><a href="options-general.php?page=wordpress-social-login&wslp=users&uid=<?php 
            echo $user_id;
            ?>
"><?php 
            echo $user_data->user_login;
            ?>
</a></strong>

						<div class="row-actions">
							<span class="view">
								<a href="options-general.php?page=wordpress-social-login&wslp=users&uid=<?php 
            echo $user_id;
            ?>
"><?php 
            _wsl_e("Profiles", 'wordpress-social-login');
            ?>
</a>
								|
							</span>

							<span class="view">
								<a href="options-general.php?page=wordpress-social-login&wslp=contacts&uid=<?php 
            echo $user_id;
            ?>
"><?php 
            _wsl_e("Contacts", 'wordpress-social-login');
            ?>
</a>
								|
							</span>

							<span class="delete">
								<?php 
            $delete_url = wp_nonce_url('options-general.php?page=wordpress-social-login&wslp=users&delete=' . $user_id);
            ?>
								<a style="color: #a00;" href="<?php 
            echo $delete_url;
            ?>
" onClick="return confirmDeleteWSLUser();"><?php 
            _wsl_e("Delete", 'wordpress-social-login');
            ?>
</a>
							</span>
						</div>
					</td>
					<td><?php 
            echo $user_data->display_name;
            ?>
</td>
					<td>
						<?php 
            if (!strstr($user_data->user_email, "@example.com")) {
                ?>
							<a href="mailto:<?php 
                echo $user_data->user_email;
                ?>
"><?php 
                echo $user_data->user_email;
                ?>
</a>
						<?php 
            } else {
                ?>
							-
						<?php 
            }
            ?>
					</td>
					<td>
						<?php 
            if ($user_data->user_url) {
                ?>
							<a href="<?php 
                echo $user_data->user_url;
                ?>
" target="_blank"><?php 
                echo str_ireplace(array("http://www.", "https://www.", "http://", "https://"), array('', '', '', '', ''), $user_data->user_url);
                ?>
</a>
						<?php 
            } else {
                ?>
							-
						<?php 
            }
            ?>
					</td>
					<td align="center">
						<?php 
            $counts = wsl_get_stored_hybridauth_user_contacts_count_by_user_id($user_id);
            if ($counts) {
                ?>
									<a href="options-general.php?page=wordpress-social-login&wslp=contacts&uid=<?php 
                echo $user_id;
                ?>
"><?php 
                echo $counts;
                ?>
</a>
								<?php 
            } else {
                echo "0";
            }
            ?>
					<td align="center"><a class="thickbox" href="<?php 
            echo admin_url('user-edit.php?user_id=' . $user_data->ID . '&TB_iframe=true&width=1150&height=550');
            ?>
"><?php 
            echo $user_data->ID;
            ?>
</a></td>
				</tr>
			<?php 
        }
    }
    ?>
	</tbody>
</table>
<?php 
    $page_links = paginate_links(array('base' => add_query_arg('pagenum', '%#%'), 'format' => '', 'prev_text' => __('&laquo;', 'text-domain'), 'next_text' => __('&raquo;', 'text-domain'), 'total' => $num_of_pages, 'current' => $pagenum));
    if ($page_links) {
        echo '<div class="tablenav"><div class="tablenav-pages" style="margin: 1em 0">' . $page_links . '</div></div>';
    }
    ?>
<script>
	function confirmDeleteWSLUser()
	{
		return confirm( <?php 
    echo json_encode(_wsl__("Are you sure you want to delete the user's social profiles and contacts?\n\nNote: The associated WordPress user won't be deleted.", 'wordpress-social-login'));
    ?>
 );
	}
</script>
<?php 
    // HOOKABLE:
    do_action("wsl_component_users_list_end");
}
function wsl_component_users_profiles($user_id)
{
    // HOOKABLE:
    do_action("wsl_component_users_profiles_start");
    $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . 'assets/img/16x16/';
    $linked_accounts = wsl_get_stored_hybridauth_user_profiles_by_user_id($user_id);
    // is it a WSL user?
    if (!$linked_accounts) {
        ?>
<div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
	<?php 
        _wsl_e("This's not a WSL user!", 'wordpress-social-login');
        ?>
.
</div>
<?php 
        return;
    }
    # http://hybridauth.sourceforge.net/userguide/Profile_Data_User_Profile.html
    $ha_profile_fields = array(array('field' => 'identifier', 'label' => _wsl__("Provider user ID", 'wordpress-social-login'), 'description' => _wsl__("The Unique user's ID on the connected provider. Depending on the provider, this field can be an number, Email, URL, etc", 'wordpress-social-login')), array('field' => 'profileURL', 'label' => _wsl__("Profile URL", 'wordpress-social-login'), 'description' => _wsl__("Link to the user profile on the provider web site", 'wordpress-social-login')), array('field' => 'webSiteURL', 'label' => _wsl__("Website URL", 'wordpress-social-login'), 'description' => _wsl__("User website, blog or web page", 'wordpress-social-login')), array('field' => 'photoURL', 'label' => _wsl__("Photo URL", 'wordpress-social-login'), 'description' => _wsl__("Link to user picture or avatar on the provider web site", 'wordpress-social-login')), array('field' => 'displayName', 'label' => _wsl__("Display name", 'wordpress-social-login'), 'description' => _wsl__("User Display name. If not provided by social network, WSL will return a concatenation of the user first and last name", 'wordpress-social-login')), array('field' => 'description', 'label' => _wsl__("Description", 'wordpress-social-login'), 'description' => _wsl__("A short about me", 'wordpress-social-login')), array('field' => 'firstName', 'label' => _wsl__("First name", 'wordpress-social-login'), 'description' => _wsl__("User's first name", 'wordpress-social-login')), array('field' => 'lastName', 'label' => _wsl__("Last name", 'wordpress-social-login'), 'description' => _wsl__("User's last name", 'wordpress-social-login')), array('field' => 'gender', 'label' => _wsl__("Gender", 'wordpress-social-login'), 'description' => _wsl__("User's gender. Values are 'female', 'male' or blank", 'wordpress-social-login')), array('field' => 'language', 'label' => _wsl__("Language", 'wordpress-social-login'), 'description' => _wsl__("User's language", 'wordpress-social-login')), array('field' => 'age', 'label' => _wsl__("Age", 'wordpress-social-login'), 'description' => _wsl__("User' age. Note that WSL do not calculate this field. We return it as it was provided", 'wordpress-social-login')), array('field' => 'birthDay', 'label' => _wsl__("Birth day", 'wordpress-social-login'), 'description' => _wsl__("The day in the month in which the person was born. Not to confuse it with 'Birth date'", 'wordpress-social-login')), array('field' => 'birthMonth', 'label' => _wsl__("Birth month", 'wordpress-social-login'), 'description' => _wsl__("The month in which the person was born", 'wordpress-social-login')), array('field' => 'birthYear', 'label' => _wsl__("Birth year", 'wordpress-social-login'), 'description' => _wsl__("The year in which the person was born", 'wordpress-social-login')), array('field' => 'email', 'label' => _wsl__("Email", 'wordpress-social-login'), 'description' => _wsl__("User's email address. Note: some providers like Facebook and Google can provide verified emails. Users with the same verified email will be automatically linked", 'wordpress-social-login')), array('field' => 'phone', 'label' => _wsl__("Phone", 'wordpress-social-login'), 'description' => _wsl__("User's phone number", 'wordpress-social-login')), array('field' => 'address', 'label' => _wsl__("Address", 'wordpress-social-login'), 'description' => _wsl__("User's address", 'wordpress-social-login')), array('field' => 'country', 'label' => _wsl__("Country", 'wordpress-social-login'), 'description' => _wsl__("User's country", 'wordpress-social-login')), array('field' => 'region', 'label' => _wsl__("Region", 'wordpress-social-login'), 'description' => _wsl__("User's state or region", 'wordpress-social-login')), array('field' => 'city', 'label' => _wsl__("City", 'wordpress-social-login'), 'description' => _wsl__("User's city", 'wordpress-social-login')), array('field' => 'zip', 'label' => _wsl__("Zip", 'wordpress-social-login'), 'description' => _wsl__("User's zipcode", 'wordpress-social-login')));
    $user_data = get_userdata($user_id);
    add_thickbox();
    $actions = array('edit_details' => '<a class="button button-secondary thickbox" href="' . admin_url('user-edit.php?user_id=' . $user_id . '&TB_iframe=true&width=1150&height=550') . '">' . _wsl__('Edit user details', 'wordpress-social-login') . '</a>', 'show_contacts' => '<a class="button button-secondary" href="' . admin_url('options-general.php?page=wordpress-social-login&wslp=contacts&uid=' . $user_id) . '">' . _wsl__('Show user contacts list', 'wordpress-social-login') . '</a>');
    // HOOKABLE:
    $actions = apply_filters('wsl_component_users_profiles_alter_actions_list', $actions, $user_id);
    ?>
<style>
	table td, table th { border: 1px solid #DDDDDD; }
	table th label { font-weight: bold; }
	.form-table th { width:120px; text-align:right; }
	p.description { font-size: 11px ! important; margin:0 ! important;}
</style>

<script>
	function confirmDeleteWSLUser()
	{
		return confirm( <?php 
    echo json_encode(_wsl__("Are you sure you want to delete the user's social profiles and contacts?\n\nNote: The associated WordPress user won't be deleted.", 'wordpress-social-login'));
    ?>
 );
	}
</script>

<div style="margin-top: 15px;padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);">
 	<h3 style="margin:0;"><?php 
    echo sprintf(_wsl__("%s's social profiles", 'wordpress-social-login'), $user_data->display_name);
    ?>
</h3>

	<p style="float: <?php 
    if (is_rtl()) {
        echo 'left';
    } else {
        echo 'right';
    }
    ?>
;margin-top:-23px">
		<?php 
    echo implode(' ', $actions);
    ?>
	</p>
</div>

<div style="padding: 20px; border: 1px solid #ddd; background-color: #fff;">
	<table class="wp-list-table widefat">
		<tr><th width="200"><label><?php 
    _wsl_e("Wordpress User ID", 'wordpress-social-login');
    ?>
</label></th><td><?php 
    echo $user_data->ID;
    ?>
</td></tr>
		<tr><th width="200"><label><?php 
    _wsl_e("Username", 'wordpress-social-login');
    ?>
</label></th><td><?php 
    echo $user_data->user_login;
    ?>
</td></tr>
		<tr><th><label><?php 
    _wsl_e("Display name", 'wordpress-social-login');
    ?>
</label></th><td><?php 
    echo $user_data->display_name;
    ?>
</td></tr>
		<tr><th><label><?php 
    _wsl_e("E-mail", 'wordpress-social-login');
    ?>
</label></th><td><a href="mailto:<?php 
    echo $user_data->user_email;
    ?>
" target="_blank"><?php 
    echo $user_data->user_email;
    ?>
</a></td></tr>
		<tr><th><label><?php 
    _wsl_e("Website", 'wordpress-social-login');
    ?>
</label></th><td><a href="<?php 
    echo $user_data->user_url;
    ?>
" target="_blank"><?php 
    echo $user_data->user_url;
    ?>
</a></td></tr>
		<tr><th><label><?php 
    _wsl_e("Registered", 'wordpress-social-login');
    ?>
</label></th><td><?php 
    echo $user_data->user_registered;
    ?>
</td></tr>
		</tr>
	 </table>
</div>

<?php 
    foreach ($linked_accounts as $link) {
        ?>
<div style="margin-top:15px;padding: 5px 20px 20px; border: 1px solid #ddd; background-color: #fff;">

<h4><img src="<?php 
        echo $assets_base_url . strtolower($link->provider) . '.png';
        ?>
" style="vertical-align:top;width:16px;height:16px;" /> <?php 
        _wsl_e("User profile", 'wordpress-social-login');
        ?>
 <small><?php 
        echo sprintf(_wsl__("as provided by %s", 'wordpress-social-login'), $link->provider);
        ?>
 </small></h4>

<table class="wp-list-table widefat">
	<?php 
        $profile_fields = (array) $link;
        foreach ($ha_profile_fields as $item) {
            $item['field'] = strtolower($item['field']);
            ?>
			<tr>
				<th width="200">
					<label><?php 
            echo $item['label'];
            ?>
</label>
				</th>
				<td>
					<?php 
            if (isset($profile_fields[$item['field']]) && $profile_fields[$item['field']]) {
                $field_value = $profile_fields[$item['field']];
                if (in_array($item['field'], array('profileurl', 'websiteurl', 'email'))) {
                    ?>
									<a href="<?php 
                    if ($item['field'] == 'email') {
                        echo 'mailto:';
                    }
                    echo $field_value;
                    ?>
" target="_blank"><?php 
                    echo $field_value;
                    ?>
</a>
								<?php 
                } elseif ($item['field'] == 'photourl') {
                    ?>
									<a href="<?php 
                    echo $field_value;
                    ?>
" target="_blank"><img width="36" height="36" align="left" src="<?php 
                    echo $field_value;
                    ?>
" style="margin-right: 5px;" > <?php 
                    echo $field_value;
                    ?>
</a>
								<?php 
                } else {
                    echo $field_value;
                }
                ?>
								<p class="description">
									<?php 
                echo $item['description'];
                ?>
.
								</p>
							<?php 
            }
            ?>
				</td>
			</tr>
		<?php 
        }
        ?>
</table>
</div>
<?php 
    }
    // HOOKABLE:
    do_action("wsl_component_users_profiles_end");
}