Done !
| Server IP : 46.105.57.169 / Your IP : 216.73.216.67 Web Server : Apache System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : verseaumee ( 152031) PHP Version : 8.5.7 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/verseaumee/middletvnew/wp-content/plugins/armember/core/classes/ |
Upload File : |
<?php
if (!class_exists('ARM_social_feature')) {
class ARM_social_feature {
var $social_settings;
var $isSocialFeature;
var $isSocialLoginFeature;
function __construct() {
global $wpdb, $ARMember, $arm_slugs;
$is_social_feature = get_option('arm_is_social_feature', 0);
$this->isSocialFeature = ($is_social_feature == '1') ? true : false;
$is_social_login_feature = get_option('arm_is_social_login_feature', 0);
$this->isSocialLoginFeature = ($is_social_login_feature == '1') ? true : false;
if ($is_social_login_feature == '1') {
add_action('init', array($this, 'arm_get_global_social_settings'), 10);
/* Handle Social Logins */
add_action('wp_ajax_arm_social_login_callback', array($this, 'arm_social_login_callback'));
add_action('wp_ajax_nopriv_arm_social_login_callback', array($this, 'arm_social_login_callback'));
/* Handle Twitter Response */
/*add_action('wp', array($this, 'arm_twitter_login_callback'), 5);
add_action('wp', array($this, 'arm_login_with_twitter'), 1);
add_action('wp', array($this, 'arm_login_with_linkedin'), 1);*/
add_action('wp_ajax_arm_linkedin_login_callback', array($this, 'arm_linkedin_login_callback'));
add_action('wp_ajax_nopriv_arm_linkedin_login_callback', array($this, 'arm_linkedin_login_callback'));
add_shortcode('arm_social_login', array($this, 'arm_social_login_shortcode_func'));
add_action('wp_ajax_nopriv_arm_google_login_callback', array($this, 'arm_google_login_callback'));
}
add_action('wp_ajax_arm_update_social_settings', array($this, 'arm_update_social_settings_func'));
add_action('wp_ajax_arm_update_social_network_from_form', array($this, 'arm_update_social_network_from_form_func'));
add_action('wp_ajax_arm_install_plugin', array($this, 'arm_plugin_install'), 10);
add_action('wp_ajax_arm_active_plugin', array($this, 'arm_activate_plugin'), 10);
add_action('wp_ajax_arm_deactive_plugin', array($this, 'arm_deactivate_plugin'), 10);
add_filter('plugins_api_args', array($this, 'arm_plugin_api_args'), 100000, 2);
add_filter('plugins_api', array($this, 'arm_plugin_api'), 100000, 3);
add_filter('plugins_api_result', array($this, 'arm_plugins_api_result'), 100000, 3);
add_filter('upgrader_package_options', array($this, 'arm_upgrader_package_options'), 100000);
}
function arm_get_global_social_settings()
{
$this->social_settings = $this->arm_get_social_settings();
}
function arm_upgrader_package_options($options) {
$options['is_multi'] = false;
return $options;
}
function arm_deactivate_plugin() {
global $ARMember, $arm_capabilities_global;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_feature_settings'], '1',1);
$plugin = sanitize_text_field( $_POST['slug'] );//phpcs:ignore
$silent = false;
$network_wide = false;
if (is_multisite())
$network_current = get_site_option('active_sitewide_plugins', array());
$current = get_option('active_plugins', array());
$do_blog = $do_network = false;
$plugin = plugin_basename(trim($plugin));
$network_deactivating = false !== $network_wide && is_plugin_active_for_network($plugin);
if (!$silent) {
do_action('deactivate_plugin', $plugin, $network_deactivating);
}
if (false != $network_wide) {
if (is_plugin_active_for_network($plugin)) {
$do_network = true;
unset($network_current[$plugin]);
} elseif ($network_wide) {
}
}
if (true != $network_wide) {
$key = array_search($plugin, $current);
if (false !== $key) {
$do_blog = true;
unset($current[$key]);
}
}
if (!$silent) {
do_action('deactivate_' . $plugin, $network_deactivating);
do_action('deactivated_plugin', $plugin, $network_deactivating);
}
if ($do_blog)
update_option('active_plugins', $current);
if ($do_network)
update_site_option('active_sitewide_plugins', $network_current);
$response = array(
'type' => 'success'
);
echo json_encode($response);
die();
}
function arm_activate_plugin( $pluginslug = "", $wpnonce_check = 1 ) {
global $ARMember, $arm_capabilities_global;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_feature_settings'], '1',$wpnonce_check);
if( !empty($_POST['slug'])){
$plugin_slug = $_POST['slug'];
} else {
$plugin_slug = $pluginslug;
}
if (empty($plugin_slug)) {
wp_send_json_error(array(
'slug' => '',
'errorCode' => 'no_plugin_specified',
'errorMessage' => addslashes(esc_html__('No plugin specified.', 'ARMember')),
));
}
$plugin = $plugin_slug;
$plugin = plugin_basename(trim($plugin));
$plugin_slug_check = explode("/", $plugin);
$plugin_slug_check = $plugin_slug_check[0];
if(!str_contains($plugin_slug_check , 'armember'))
{
echo json_encode(array('error' => 'false', 'msg' => addslashes(esc_html__('You cannot install this Plugin as your are not using ARMember', 'ARMember'))));
die;
}
// $plugin = sanitize_text_field( $_POST['slug'] );//phpcs:ignore
$plugin = $plugin_slug;
$plugin = plugin_basename(trim($plugin));
$network_wide = false;
$silent = false;
$redirect = '';
if (is_multisite() && ( $network_wide || is_network_only_plugin($plugin) )) {
$network_wide = true;
$current = get_site_option('active_sitewide_plugins', array());
$_GET['networkwide'] = 1; // Back compat for plugins looking for this value.
} else {
$current = get_option('active_plugins', array());
}
$valid = validate_plugin($plugin);
if (is_wp_error($valid))
return $valid;
if (( $network_wide && !isset($current[$plugin]) ) || (!$network_wide && !in_array($plugin, $current) )) {
if (!empty($redirect))
wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); // we'll override this later if the plugin can be included without fatal error
ob_start();
wp_register_plugin_realpath(WP_PLUGIN_DIR . '/' . $plugin);
$_wp_plugin_file = $plugin;
include_once( WP_PLUGIN_DIR . '/' . $plugin ); //phpcs:ignore
$plugin = $_wp_plugin_file; // Avoid stomping of the $plugin variable in a plugin.
if (!$silent) {
do_action('activate_plugin', $plugin, $network_wide);
do_action('activate_' . $plugin, $network_wide);
}
if ($network_wide) {
$current = get_site_option('active_sitewide_plugins', array());
$current[$plugin] = time();
update_site_option('active_sitewide_plugins', $current);
} else {
$current = get_option('active_plugins', array());
$current[] = $plugin;
sort($current);
update_option('active_plugins', $current);
}
if (!$silent) {
do_action('activated_plugin', $plugin, $network_wide);
}
$response = array();
if( $wpnonce_check == 1 ){
if (ob_get_length() > 0) {
$response = array(
'type' => 'error'
);
echo json_encode($response);
die();
} else {
$response = array(
'type' => 'success'
);
echo json_encode($response);
die();
}
}
}
if( $wpnonce_check == 1 ){
die();
}
}
function arm_plugin_install($plugin_name = '', $wpnonce_check = 1) {
global $ARMember, $arm_capabilities_global;
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_feature_settings'], '1', $wpnonce_check);
if( !empty($_POST['slug'] )){
$plugin_slug_var = $_POST['slug'];
} else {
$plugin_slug_var = $plugin_name;
}
if (empty($plugin_slug_var)) {//phpcs:ignore
wp_send_json_error(array(
'slug' => '',
'errorCode' => 'no_plugin_specified',
'errorMessage' => esc_html__('No plugin specified.', 'ARMember'),
));
}
$plugin = $plugin_slug_var;
$plugin = plugin_basename(trim($plugin));
$plugin_slug = explode("/", $plugin);
$plugin_slug = $plugin_slug[0];
if(!str_contains($plugin_slug , 'armember'))
{
echo json_encode(array('error' => 'false', 'msg' => addslashes(esc_html__('You cannot install this Plugin as your are not using ARMember', 'ARMember'))));
die;
}
$status = array(
'install' => 'plugin',
'slug' => sanitize_key(wp_unslash($plugin_slug)),//phpcs:ignore
// 'slug' => sanitize_key(wp_unslash($_POST['slug'])),//phpcs:ignore
);
if (!current_user_can('install_plugins')) {
$status['errorMessage'] = esc_html__('Sorry, you are not allowed to install plugins on this site.', 'ARMember');
// wp_send_json_error($status);
if($wpnonce_check == 1 ){
wp_send_json_error($status);
}
}
if (file_exists(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php')) {
include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
}
if (file_exists(ABSPATH . 'wp-admin/includes/plugin-install.php'))
include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
$api = plugins_api('plugin_information', array(
// 'slug' => sanitize_key(wp_unslash($_POST['slug'])),//phpcs:ignore
'slug' => sanitize_key(wp_unslash($plugin_slug)),//phpcs:ignore
'fields' => array(
'sections' => false,
),
));
if (is_wp_error($api)) {
$status['errorMessage'] = $api->get_error_message();
// wp_send_json_error($status);
if($wpnonce_check == 1 ){
wp_send_json_error($status);
}
}
$status['pluginName'] = $api->name;
$skin = new WP_Ajax_Upgrader_Skin();
$upgrader = new Plugin_Upgrader($skin);
$result = $upgrader->install($api->download_link);
if (defined('WP_DEBUG') && WP_DEBUG) {
$status['debug'] = $skin->get_upgrade_messages();
}
if (is_wp_error($result)) {
$status['errorCode'] = $result->get_error_code();
$status['errorMessage'] = $result->get_error_message();
// wp_send_json_error($status);
if($wpnonce_check == 1 ){
wp_send_json_error($status);
}
} elseif (is_wp_error($skin->result)) {
$status['errorCode'] = $skin->result->get_error_code();
$status['errorMessage'] = $skin->result->get_error_message();
// wp_send_json_error($status);
if($wpnonce_check == 1 ){
wp_send_json_error($status);
}
} elseif ($skin->get_errors()->get_error_code()) {
$status['errorMessage'] = $skin->get_error_messages();
// wp_send_json_error($status);
if($wpnonce_check == 1 ){
wp_send_json_error($status);
}
} elseif (is_null($result)) {
global $wp_filesystem;
$status['errorCode'] = 'unable_to_connect_to_filesystem';
$status['errorMessage'] = esc_html__('Unable to connect to the filesystem. Please confirm your credentials.', 'ARMember');
if ($wp_filesystem instanceof WP_Filesystem_Base && is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
$status['errorMessage'] = esc_html($wp_filesystem->errors->get_error_message());
}
// wp_send_json_error($status);
if($wpnonce_check == 1 ){
wp_send_json_error($status);
}
}
$install_status = $this->arm_install_plugin_install_status($api);
if (current_user_can('activate_plugins') && is_plugin_inactive($install_status['file'])) {
$status['activateUrl'] = add_query_arg(array(
'_wpnonce' => wp_create_nonce('activate-plugin_' . $install_status['file']),
'action' => 'activate',
'plugin' => $install_status['file'],
), network_admin_url('plugins.php'));
}
if (is_multisite() && current_user_can('manage_network_plugins')) {
$status['activateUrl'] = add_query_arg(array('networkwide' => 1), $status['activateUrl']);
}
$status['pluginFile'] = $install_status['file'];
// wp_send_json_success($status);
if($wpnonce_check == 1 ){
wp_send_json_success($status);
}
}
function arm_plugin_api_args($args, $action) {
return $args;
}
function arm_plugin_api($res, $action, $args) {
global $ARMember;
$ARMember->arm_session_start();
if (isset($_SESSION['arm_member_addon']) && !empty($_SESSION['arm_member_addon'])) {
$armember_final_addons_array = array();
$armember_final_addons_array = array_merge($armember_final_addons_array, $_SESSION['arm_member_addon']['feature']);
$armember_final_addons_array = array_merge($armember_final_addons_array, $_SESSION['arm_member_addon']['payment_gateways']);
$armember_final_addons_array = array_merge($armember_final_addons_array, $_SESSION['arm_member_addon']['integrations']);
//$armember_addons = $_SESSION['arm_member_addon'];
$obj = array();
foreach ($armember_final_addons_array as $slug => $armember_addon) {
if (isset($slug) && isset($args->slug)) {
if ($slug != $args->slug) {
continue;
} else {
$obj['name'] = $armember_addon['full_name'];
$obj['slug'] = $slug;
$obj['version'] = $armember_addon['plugin_version'];
$obj['download_link'] = $armember_addon['install_url'];
return (object) $obj;
}
} else {
continue;
}
}
}
return $res;
}
function arm_plugins_api_result($res, $action, $args) {
global $ARMember;
return $res;
}
function arm_get_social_settings() {
global $wpdb, $ARMember, $arm_members_class, $arm_member_forms;
$social_settings = get_option('arm_social_settings');
$social_settings = maybe_unserialize($social_settings);
if (!empty($social_settings['options'])) {
$options = $social_settings['options'];
$options['facebook']['label'] = esc_html__('Facebook', 'ARMember');
$options['twitter']['label'] = esc_html__('Twitter', 'ARMember');
$options['linkedin']['label'] = esc_html__('LinkedIn', 'ARMember');
$options['vk']['label'] = esc_html__('VK', 'ARMember');
$options['tumblr']['label'] = esc_html__('Tumblr', 'ARMember');
$options['insta']['label'] = esc_html__('Instagram', 'ARMember');
$options['google']['label'] = esc_html__('Google', 'ARMember');
$social_settings['options'] = $options;
}
$social_settings = apply_filters('arm_get_social_settings', $social_settings);
return $social_settings;
}
function arm_get_active_social_options() {
global $wpdb, $ARMember, $arm_members_class, $arm_member_forms;
$social_options = isset($this->social_settings['options']) ? $this->social_settings['options'] : array();
$active_opts = array();
if (!empty($social_options)) {
foreach ($social_options as $key => $opt) {
if (isset($opt['status']) && $opt['status'] == '1') {
$active_opts[$key] = $opt;
}
}
}
$active_opts = apply_filters('arm_get_active_social_options', $active_opts);
return $active_opts;
}
function arm_update_social_settings_func() {
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_capabilities_global;
$post_data = $_POST;//phpcs:ignore
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_general_settings'], '1',1);
if (isset($post_data['s_action']) && $post_data['s_action'] == 'arm_update_social_settings') {
$social_settings = $post_data['arm_social_settings'];
$social_settings = arm_array_map($social_settings);
update_option('arm_social_settings', $social_settings);
$response = array('type' => 'success', 'msg' => esc_html__('Social Setting(s) has been Saved Successfully.', 'ARMember'));
} else {
$response = array('type' => 'error', 'msg' => esc_html__('There is an error while updating settings, please try again.', 'ARMember'));
}
echo arm_pattern_json_encode($response);
die();
}
function arm_update_social_network_from_form_func() {
$response = array('type' => 'error', 'msg' => esc_html__('There is an error while updating settings, please try again.', 'ARMember'), 'old_settings' => '');
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings,$arm_capabilities_global;
if (isset($_POST['action']) && $_POST['action'] == 'arm_update_social_network_from_form') {//phpcs:ignore
$ARMember->arm_check_user_cap($arm_capabilities_global['arm_manage_forms'],1,1);
$posted_data = array_map( array( $ARMember, 'arm_recursive_sanitize_data'), $_POST['arm_social_settings']['options'] );//phpcs:ignore
$socialOptions = isset($posted_data) ? $posted_data : array();
if (!empty($socialOptions)) {
foreach ($socialOptions as $snk => $snv) {
if (!empty($snv)) {
$icons = get_option('arm_social_icons_' . $snk, array());
$icons = maybe_unserialize($icons);
if (!empty($snv['custom_icon'])) {
if(is_array($snv['custom_icon']))
{
foreach ($snv['custom_icon'] as $custom_icon) {
$baseName = basename($custom_icon);
if (isset($snv['icon']) && $snv['icon'] == 'custom') {
$snv['icon'] = $baseName;
}
$icons[$baseName] = $custom_icon;
update_option('arm_social_icons_' . $snk, $icons);
}
}
else
{
$baseName = basename($snv['custom_icon']);
if (isset($snv['icon']) && $snv['icon'] == 'custom') {
$snv['icon'] = $baseName;
}
$icons[$baseName] = $snv['custom_icon'];
update_option('arm_social_icons_' . $snk, $icons);
}
}
}
}
}
$response = array('type' => 'success', 'msg' => esc_html__('Social Setting(s) has been Saved Successfully.', 'ARMember'), 'old_settings' => maybe_serialize($socialOptions));
}
echo arm_pattern_json_encode($response);
die();
}
function arm_get_social_network_icons($type = '', $icon = '') {
global $wpdb, $ARMember, $arm_members_class, $arm_member_forms, $arm_social_feature;
if($arm_social_feature->isSocialLoginFeature)
{
$networkIcons = array();
/* Query Monitor Change */
$iconName = "";
if( !empty($icon) && $icon != ''){
$last_pos = strrpos($icon,'/');
$iconName = substr($icon,($last_pos + 1),strlen($icon));
}
$is_custom_icon = false;
if (!empty($type)) {
switch ($type) {
case 'facebook':
$fb_icons = array('fb_1.png', 'fb_2.png', 'fb_3.png', 'fb_4.png', 'fb_5.png', 'fb_6.png', 'fb_7.png');
if( !in_array($iconName,$fb_icons) ){
$is_custom_icon = true;
}
foreach ($fb_icons as $icon) {
if (file_exists(MEMBERSHIP_IMAGES_DIR . '/social_icons/' . $icon)) {
$networkIcons[$icon] = MEMBERSHIP_IMAGES_URL . '/social_icons/' . $icon;
}
}
break;
case 'twitter':
$tw_icons = array('tw_1.png', 'tw_2.png', 'tw_3.png', 'tw_4.png', 'tw_5.png', 'tw_6.png', 'tw_7.png');
if( !in_array($iconName,$tw_icons) ){
$is_custom_icon = true;
}
foreach ($tw_icons as $icon) {
if (file_exists(MEMBERSHIP_IMAGES_DIR . '/social_icons/' . $icon)) {
$networkIcons[$icon] = MEMBERSHIP_IMAGES_URL . '/social_icons/' . $icon;
}
}
break;
case 'linkedin':
$li_icons = array('li_1.png', 'li_2.png', 'li_3.png', 'li_4.png', 'li_5.png', 'li_6.png', 'li_7.png');
if( !in_array($iconName,$li_icons) ){
$is_custom_icon = true;
}
foreach ($li_icons as $icon) {
if (file_exists(MEMBERSHIP_IMAGES_DIR . '/social_icons/' . $icon)) {
$networkIcons[$icon] = MEMBERSHIP_IMAGES_URL . '/social_icons/' . $icon;
}
}
break;
case 'google':
$google_icons = array('google_1.png', 'google_2.png', 'google_3.png', 'google_4.png', 'google_5.png', 'google_6.png', 'google_7.png');
if( !in_array($iconName,$google_icons) ){
$is_custom_icon = true;
}
foreach ($google_icons as $icon) {
if (file_exists(MEMBERSHIP_IMAGES_DIR . '/social_icons/' . $icon)) {
$networkIcons[$icon] = MEMBERSHIP_IMAGES_URL . '/social_icons/' . $icon;
}
}
break;
case 'vk':
$vk_icons = array('vk_1.png', 'vk_2.png', 'vk_3.png', 'vk_4.png', 'vk_5.png', 'vk_6.png', 'vk_7.png');
if( !in_array($iconName,$vk_icons) ){
$is_custom_icon = true;
}
foreach ($vk_icons as $icon) {
if (file_exists(MEMBERSHIP_IMAGES_DIR . '/social_icons/' . $icon)) {
$networkIcons[$icon] = MEMBERSHIP_IMAGES_URL . '/social_icons/' . $icon;
}
}
break;
case 'insta':
$insta_icons = array('insta_1.png', 'insta_2.png', 'insta_3.png', 'insta_4.png', 'insta_5.png', 'insta_6.png', 'insta_7.png');
if( !in_array($iconName,$insta_icons) ){
$is_custom_icon = true;
}
foreach ($insta_icons as $icon) {
if (file_exists(MEMBERSHIP_IMAGES_DIR . '/social_icons/' . $icon)) {
$networkIcons[$icon] = MEMBERSHIP_IMAGES_URL . '/social_icons/' . $icon;
}
}
break;
case 'tumblr':
$tu_icons = array('tu_1.png', 'tu_2.png', 'tu_3.png', 'tu_4.png', 'tu_5.png', 'tu_6.png', 'tu_7.png');
if( !in_array($iconName,$tu_icons) ){
$is_custom_icon = true;
}
foreach ($tu_icons as $icon) {
if (file_exists(MEMBERSHIP_IMAGES_DIR . '/social_icons/' . $icon)) {
$networkIcons[$icon] = MEMBERSHIP_IMAGES_URL . '/social_icons/' . $icon;
}
}
break;
default:
break;
}
/* Query Monitor Change */
if( true == $is_custom_icon ){
$networkCustomIcons = $this->arm_get_social_network_custom_icons($type);
} else {
$networkCustomIcons = array();
}
$networkIcons = array_merge($networkIcons, $networkCustomIcons);
}
return $networkIcons;
}
}
function arm_get_social_network_custom_icons($type = '') {
global $wpdb, $ARMember, $arm_members_class, $arm_member_forms;
$networkIcons = array();
if (!empty($type)) {
$networkIcons = get_option('arm_social_icons_' . $type, array());
$networkIcons = maybe_unserialize($networkIcons);
if (!empty($networkIcons)) {
$isDeleted = false;
foreach ($networkIcons as $icon => $url) {
if (!file_exists(MEMBERSHIP_UPLOAD_DIR . '/social_icon/' . basename($url))) {
unset($networkIcons[$icon]);
$isDeleted = true;
}
}
if ($isDeleted) {
update_option('arm_social_icons_' . $type, $networkIcons);
}
}
}
return $networkIcons;
}
function arm_get_user_id_by_meta($meta_key = '', $meta_value = '') {
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_member_forms;
$user_id = 0;
if (!empty($meta_key) && !empty($meta_value)) {
$user_id = $wpdb->get_var( $wpdb->prepare("SELECT `user_id` FROM `$wpdb->usermeta` WHERE `meta_key`=%s AND `meta_value`=%s",$meta_key,$meta_value) );
}
return $user_id;
}
function arm_social_login_shortcode_func($atts, $content, $tag) {
global $ARMember;
/* ---------------------/.Begin Set Shortcode Attributes--------------------- */
$defaults = array(
'redirect_to' => ARM_HOME_URL,
'network' => '',
'icon' => '',
'form_network_options' => '',
);
$args = shortcode_atts($defaults, $atts, $tag);
$args = array_map( array( $ARMember, 'arm_recursive_sanitize_data_extend_only_kses'), $args ); //phpcs:ignore
extract($args);
/* ---------------------/.End Set Shortcode Attributes--------------------- */
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_social_feature;
if (is_user_logged_in()) {
return '';
}
$args['network'] = (isset($args['network']) && !empty($args['network'])) ? preg_replace('/\s+/', '', $args['network']) : 'all';
$args['form_network_options'] = (!empty($args['form_network_options'])) ? stripslashes_deep($args['form_network_options']) : '';
$args['icon'] = (isset($args['icon']) && !empty($args['icon'])) ? $args['icon'] : '';
$displayNewwork = explode(',', $args['network']);
$social_settings = !empty($arm_social_feature->social_settings) ? $arm_social_feature->social_settings : array();
$social_options = $this->arm_get_active_social_options();
$enable_one_click_signup = ( isset($social_settings['options']['arm_one_click_social_signup']) && $social_settings['options']['arm_one_click_social_signup'] == 1 ) ? true : false;
$content_js = '';
do_action('arm_before_render_form', 0, $atts);
if (!empty($social_options)) {
$formSNOptions = maybe_unserialize($args['form_network_options']);
$new_social_options = array();
if (!empty($displayNewwork) && !in_array('all', $displayNewwork)) {
foreach ($displayNewwork as $dsnk) {
if (in_array($dsnk, array_keys($social_options))) {
$new_social_options[$dsnk] = $social_options[$dsnk];
if (isset($formSNOptions[$dsnk])) {
if (isset($formSNOptions[$dsnk]['icon'])) {
$new_social_options[$dsnk]['icon'] = $formSNOptions[$dsnk]['icon'];
}
}
}
}
$social_options = $new_social_options;
}
$content = apply_filters('arm_before_social_login_shortcode_content', $content, $args);
$content .= "<div class='arm_social_login_content_wrapper'>";
$content .= "<div class='arm_social_login_main_container'>";
if (!empty($social_options)) {
foreach ($social_options as $sk => $so) {
if (!is_array($so)) {
continue;
}
$a_tag_attr = '';
/* Query Monitor - Pass extra argument */
$icons = $this->arm_get_social_network_icons($sk,$icon);
if (!empty($displayNewwork) && !in_array('all', $displayNewwork) && count($displayNewwork) == 1) {
if (!empty($args['icon'])) {
$so['icon'] = basename($args['icon']);
$icons[$so['icon']] = $args['icon'];
}
}
if (isset($icons[$so['icon']]))
{
/*
if (file_exists(strstr($icons[$so['icon']], "//")))
{
$icons[$so['icon']] = strstr($icons[$so['icon']], "//");
}
else if (file_exists($icons[$so['icon']]))
{
$icons[$so['icon']] = $icons[$so['icon']];
}
else
{
$icons[$so['icon']] = $icons[$so['icon']];
}
*/
$icon_img = '<img src="' . esc_url($icons[$so['icon']]) . '" alt="' . esc_attr($so['label']) . '" class="arm_social_login_custom_image">';
} else {
$icon = array_slice($icons, 0, 1);
$icon_url = array_shift($icon);
/*
if (file_exists(strstr($icon_url, "//")))
{
$icon_url = strstr($icon_url, "//");
}
else if (file_exists($icon_url))
{
$icon_url = $icon_url;
}
else
{
$icon_url = $icon_url;
}
*/
$icon_img = '<img src="' . esc_url($icon_url) . '" alt="' . esc_attr($so['label']) . '" class="arm_social_login_custom_image">';
}
$content .= '<div class="arm_social_link_container arm_social_'.esc_attr($sk).'_container" id="arm_social_'.esc_attr($sk).'_container">';
$redirect_to = isset($redirect_to) ? $redirect_to : '';
$content .= '<input type="hidden" data-id="arm_social_login_redirect_to" value="' . esc_attr($redirect_to) . '">';
$link_class = 'arm_social_link_' . $sk;
$link_id = '';
switch ($sk) {
case 'facebook':
$content_js .= "jQuery(document).ready(function () {FacebookInit('" . $so['app_id'] . "');});";
$a_tag_attr = ' href="javascript:void(0)" onclick="FacebookLoginInit();" title="' . esc_attr__('Login With Facebook', 'ARMember') . '" ';
break;
case 'linkedin':
$authUrl = $arm_global_settings->add_query_arg('action', 'arm_login_with_linkedin', ARM_HOME_URL);
$arm_linkedin_client_id = $so['client_id'];
$a_tag_attr = ' href="javascript:void(0)" onclick="LinkedInLoginInit();" title="' . esc_attr__('Login With LinkedIn', 'ARMember') . '" ';
$content .= '<input type="hidden" data-id="arm_social_linkedin_client_id" value="' .
esc_attr($arm_linkedin_client_id) . '">';
$content .= '<input type="hidden" id="arm_social_linkedin_access_token" value="">';
$content .= '<input type="hidden" data-id="arm_social_linkedin_login_auth_url" value="' . esc_attr($authUrl) . '">';
break;
case 'twitter':
$authUrl = get_the_permalink();
$authUrl = $arm_global_settings->add_query_arg('redirect_to', ARM_HOME_URL, $authUrl);
$authUrl = $arm_global_settings->add_query_arg('page', 'arm_login_with_twitter', $authUrl);
$a_tag_attr = ' href="#" data-url="' . esc_attr($authUrl) . '" title="' . esc_attr__('Login With Twitter', 'ARMember') . '" ';
break;
case 'pinterest':
$content_js .= "jQuery(document).ready(function () {PinterestInit('" . $so['app_id'] . "');});";
$a_tag_attr = ' href="javascript:void(0)" onclick="PinterestLoginInit();" title="' . esc_attr__('Login With Pinterest+', 'ARMember') . '"';
break;
case 'vk':
$content .= '<input type="hidden" name="arm_vk_user_data" id="arm_vk_user_data" value="" />';
$content_js .= "
function VKAuthRequest() {
var domain = window.location.hostname;
var client_id = '" . $so['app_id'] . "';
var site_redirect_url = '" . MEMBERSHIP_VIEWS_URL . "/callback/vk_callback.php';
var redirect_url = 'https://oauth.vk.com/authorize?client_id='+client_id+'&scope=email&response_type=code&redirect_uri='+site_redirect_url;
vk_auth = window.open(redirect_url, '', 'width=800,height=300,scrollbars=yes');
redirect_uri = '';
var interval = setInterval(function() {
if (vk_auth.closed) {
clearInterval(interval);
/* if user close the popup than do stuff here */
return;
}
}, 500);
}";
$content_js .= '';
$a_tag_attr = ' href="javascript:void(0)" id="arm_social_link_vk" onclick="VKAuthRequest();" title="' . esc_attr__('Login With vkontakte', 'ARMember') . '" ';
break;
case 'insta':
require_once (MEMBERSHIP_LIBRARY_DIR . '/instagram/src/Client.php');
$INSTAGRAM_GET_TYPE = 'iType';
$INSTAGRAM_GET_RESPONSE = 'iResponse';
$INSTAGRAM_CLIENT_ID = $so["client_id"];
$INSTAGRAM_CLIENT_SECRET = $so["client_secret"];
$API_CONFIG_callbackUrl = MEMBERSHIP_VIEWS_URL . "/callback/insta_callback.php";
$OBJ_INSTAGRAM1 = new Andreyco\Instagram\Client(array (
'apiKey' => $INSTAGRAM_CLIENT_ID,
'apiSecret' => $INSTAGRAM_CLIENT_SECRET,
'apiCallback' => $API_CONFIG_callbackUrl,
'scope' => array('basic'),
));
$state = md5(time());
$INSTAGRAM_URL_AUTH = $OBJ_INSTAGRAM1->getLoginUrl(array('basic'), $state);
$content .= '<input type="hidden" name="arm_insta_user_data" id="arm_insta_user_data" value="" />';
$content_js .= "
function InstagramLoginInit() {
window.open('".$INSTAGRAM_URL_AUTH."','', 'width=500,height=350');
}";
$a_tag_attr = ' href="javascript:void(0)" onclick="InstagramLoginInit();" title="' . esc_attr__('Login With Instagram', 'ARMember') . '" ';
break;
case 'google':
global $arm_version;
$base_url ="https://accounts.google.com/o/oauth2/v2/auth";
$google_random_code_id = arm_generate_random_code();
$link_id = "arm_google_signin_btn_".$google_random_code_id;
$google_scopes = urlencode( 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile' );
$redirect_uri = site_url( '?arm_google_action=arm_google_signin_response' );
$site_redirection_URL = $base_url ."?arm_google_action=arm_google_signin_response&scope=".$google_scopes."&redirect_uri=" . $redirect_uri . "&response_type=code&client_id=" . $so['client_id'] . "&prompt=select_account";
$a_tag_attr = ' href="javascript:void(0)" onclick="GoogleSigninInit();" title="' . esc_attr__('Login With Google', 'ARMember') . '" ';
$content .= '<input type="hidden" id="arm_social_google_access_token" value="">';
$content .= '<input type="hidden" id="arm_social_google_site_redirect" value="'.$site_redirection_URL.'">';
wp_enqueue_script('arm_google_social_login_script','https://accounts.google.com/gsi/client',array(),$arm_version);
break;
case 'tumblr':
$authUrl = get_the_permalink();
$authUrl = $arm_global_settings->add_query_arg('redirect_to', ARM_HOME_URL, $authUrl);
$authUrl = $arm_global_settings->add_query_arg('page', 'arm_login_with_tumblr', $authUrl);
$a_tag_attr = ' href="#" data-url="' . $authUrl . '" title="' . esc_attr__('Login With Tumblr', 'ARMember') . '" ';
break;
default:
break;
}
$content_link_id = '';
if(!empty($link_id))
{
$content_link_id = ' id="'.$link_id.'" ';
}
$content .= '<a '.$content_link_id.'class="arm_social_link ' . $link_class . ' " data-type="' . $sk . '" ' . $a_tag_attr . '>';
$content .= (!empty($icon_img)) ? $icon_img : $so['label'];
$content .= '</a>';
$content .= '</div>';
}
}
if (!empty($content_js)) {
$content .= '<script data-cfasync="false" type="text/javascript">' . $content_js . '</script>';
}
$content .= "</div>";
$content .= "<div class='arm_social_connect_loader' id='arm_social_connect_loader' style='display:none;'>";
$content .= '<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="30px" height="30px" viewBox="0 0 128 128" xml:space="preserve"><g><linearGradient id="linear-gradient"><stop offset="0%" stop-color="#ffffff"/><stop offset="100%" class="arm_social_connect_svg" /></linearGradient><path d="M63.85 0A63.85 63.85 0 1 1 0 63.85 63.85 63.85 0 0 1 63.85 0zm.65 19.5a44 44 0 1 1-44 44 44 44 0 0 1 44-44z" fill="url(#linear-gradient)" fill-rule="evenodd"/><animateTransform attributeName="transform" type="rotate" from="0 64 64" to="360 64 64" dur="1080ms" repeatCount="indefinite"></animateTransform></g></svg>';
$content .= "</div>";
$content .= "</div>";
$content = apply_filters('arm_after_social_login_shortcode_content', $content, $args);
}
$ARMember->arm_check_font_awesome_icons($content);
return do_shortcode($content);
}
function arm_social_login_callback($posted_data = array(), $verified_flag=0) {
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_member_forms, $arm_case_types, $wp_filesystem, $arm_subscription_plans, $arm_social_feature;
if($arm_social_feature->isSocialLoginFeature)
{
//$ARMember->arm_check_user_cap('',0,1);
$social_settings = !empty($arm_social_feature->social_settings) ? $arm_social_feature->social_settings : array();
$social_options = $this->arm_get_active_social_options();
$or_posted_data = array();
$or_posted_data['action'] = isset($_POST['action']) ? sanitize_text_field( $_POST['action'] ) : '';//phpcs:ignore
$or_posted_data['action_type'] = isset($_POST['action_type']) ? sanitize_text_field( $_POST['action_type'] ) : '';//phpcs:ignore
$or_posted_data['token'] = isset($_POST['token']) ? sanitize_text_field( $_POST['token'] ) : '';//phpcs:ignore
$or_posted_data['fbuserId'] = isset($_POST['fbuserId']) ? sanitize_text_field( $_POST['fbuserId'] ) : '';//phpcs:ignore
$posted_data = (!empty($posted_data)) ? $posted_data : $or_posted_data;
$fail_msg = (!empty($arm_global_settings->common_message['social_login_failed_msg'])) ? $arm_global_settings->common_message['social_login_failed_msg'] : esc_html__('Login Failed, please try again.', 'ARMember');
$fail_msg = (!empty($fail_msg)) ? $fail_msg : esc_html__('Sorry, Something went wrong. Please try again.', 'ARMember');
$return = array('status' => 'error', 'message' => $fail_msg);
if (!empty($posted_data) && $posted_data['action'] == 'arm_social_login_callback') {
$posted_data = apply_filters('arm_social_login_callback_detail', $posted_data);
$action_type = $posted_data['action_type'];
do_action('arm_before_social_login_callback', $posted_data);
if (!empty($action_type)) {
if($social_options[$action_type]['status']!=1)
{
exit;
}
if(!$verified_flag)
{
$posted_data['user_email'] = $posted_data['picture'] = $posted_data['user_profile_picture'] = $posted_data['gender'] = $posted_data['birthday'] = $posted_data['user_login'] = '';
}
if($action_type=='facebook' )
{
$fb_token = $posted_data['token'];
$fb_user_id = $posted_data['fbuserId'];
$get_fb_user_details = wp_remote_get("https://graph.facebook.com/".$fb_user_id."/?fields=id,name,email,picture,first_name,last_name,birthday,gender&access_token=".$fb_token);
if(!empty($get_fb_user_details['body']) && !is_wp_error($get_fb_user_details))
{
$get_fb_user_details = json_decode($get_fb_user_details['body'], true);
$posted_data['user_email'] = $get_fb_user_details['email'];
$posted_data['userId'] = $get_fb_user_details['id'];
$posted_data['first_name'] = isset($get_fb_user_details['first_name']) ? $get_fb_user_details['first_name'] : '';
$posted_data['last_name'] = isset($get_fb_user_details['last_name']) ? $get_fb_user_details['last_name'] : '';
$posted_data['birthday'] = isset($get_fb_user_details['birthday']) ? $get_fb_user_details['birthday'] : '';
$posted_data['user_profile_picture'] = $posted_data['picture'] = isset($get_fb_user_details['picture']['data']['url']) ? $get_fb_user_details['picture']['data']['url'] : '';
$posted_data['gender'] = isset($get_fb_user_details['gender']) ? $get_fb_user_details['gender'] : '';
$posted_data['display_name'] = isset($get_fb_user_details['display_name']) ? $get_fb_user_details['display_name'] : $posted_data['first_name']." ".$posted_data['last_name'];
}
}
else if ($action_type == 'linkedin')
{
$linkedin_access_token = $posted_data['token'];
$header = array( 'headers' => array( "Authorization" => "Bearer $linkedin_access_token", "X-RestLi-Protocol-Version" => "2.0.0" ) );
$user_result=wp_remote_get('https://api.linkedin.com/v2/userinfo', $header);
if(!empty($user_result['body']) && !is_wp_error($user_result))
{
$user_result_data = json_decode($user_result['body'], true);
$ln_ac_id=$user_result_data['sub'];
if(!empty($ln_ac_id))
{
$ln_first_name=(isset($user_result_data['given_name']))?$user_result_data['given_name']:'';
$ln_last_name=(isset($user_result_data['family_name']))?$user_result_data['family_name']:'';
$ln_profileurl=(isset($user_result_data['picture']))?$user_result_data['picture']:'';
$posted_data['user_email'] = $user_result_data['email'];
$posted_data['userId'] = $ln_ac_id;
$posted_data['first_name'] = $ln_first_name;
$posted_data['last_name'] = $ln_last_name;
$posted_data['user_profile_picture'] = $posted_data['picture'] = $ln_profileurl;
$posted_data['display_name'] = $ln_first_name. " ".$ln_last_name;
$verified_flag = 1;
}
}
}
else if($action_type == 'google')
{
$google_token= $posted_data['token'];
$header = array( 'headers' => array( "Authorization" => "Bearer $google_token" ) );
$user_result = wp_remote_get("https://www.googleapis.com/oauth2/v1/userinfo?alt=json", $header);
if(!empty($user_result['body']) && !is_wp_error($user_result))
{
$get_user_data = json_decode($user_result['body'], true);
$posted_data['user_login'] = $get_user_data['email'];
$posted_data['user_email'] = $get_user_data['email'];
$posted_data['first_name'] = $get_user_data['given_name'];
$posted_data['last_name'] = $get_user_data['family_name'];
$posted_data['display_name'] = $get_user_data['name'];
$posted_data['user_profile_picture'] = $posted_data['picture'] = $get_user_data['picture'];
$posted_data['userId'] = $get_user_data['id'];
}
}
else if($action_type == 'vk')
{
$vk_code = $posted_data['token'];
$client_id = $social_options[$action_type]['app_id'];
$client_secret = $social_options[$action_type]['app_secret'];
$redirect_uri = MEMBERSHIP_VIEWS_URL . '/callback/vk_callback.php';
$token_url = "https://api.vk.com/oauth/access_token";
$encoded = urlencode('client_id') . '=' . urlencode($client_id) . '&';
$encoded .= urlencode('client_secret') . '=' . urlencode($client_secret) . '&';
$encoded .= urlencode('code') . '=' . urlencode($vk_code) . '&';
$encoded .= urlencode('redirect_uri') . '=' . urlencode($redirect_uri);
$ch = curl_init($token_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
$get_vk_user_details_token = json_decode($response);
if (isset($get_vk_user_details_token->access_token) && $get_vk_user_details_token->access_token !== '') {
$vk_access_token = $get_vk_user_details_token->access_token;
$arm_vk_user_id = $get_vk_user_details_token->user_id;
$arm_vk_email = $get_vk_user_details_token->email;
$vk_params = urlencode('uids') . '=' . urlencode($arm_vk_user_id) . '&';
$vk_params .= urlencode('access_token') . '=' . urlencode($vk_access_token) . '&';
$vk_params .= urlencode('v') . '=' . urlencode('5.126') . '&';
$vk_params .= urlencode('fields') . '=' . urlencode('uid,first_name,last_name,screen_name,nickname,photo_200');
$token_url = "https://api.vk.com/method/users.get?".$vk_params;
$user_result = wp_remote_get($token_url);
if(!empty($user_result['body']) && !is_wp_error($user_result))
{
$user_result = json_decode($user_result['body'], true);
if(isset($user_result['response'][0])){
$user_result = $user_result['response'][0];
$posted_data['user_email'] = $arm_vk_email;
$posted_data['userId'] = $resp->uid;
$posted_data['first_name'] = $resp->first_name;
$posted_data['last_name'] = $resp->last_name;
$posted_data['user_profile_picture'] = $posted_data['picture'] = $resp->photo_200;
$posted_data['display_name'] = $resp->nickname;
$posted_data['user_login'] = $arm_vk_email;
}
}
}
}
else if($action_type == 'insta')
{
$insta_code = $posted_data['token'];
require_once ( MEMBERSHIP_LIBRARY_URL. '/instagram/src/Client.php');
$client_id = $social_options[$action_type]['client_id'];
$client_secret = $social_options[$action_type]['client_secret'];
$redirect_uri = MEMBERSHIP_VIEWS_URL . '/callback/insta_callback.php';
$OBJ_INSTAGRAM = new Andreyco\Instagram\Client(array(
'apiKey' => $client_id,
'apiSecret' => $client_secret,
'apiCallback' => $redirect_uri,
));
$code = sanitize_text_field($_GET['code']);//phpcs:ignore
$data = $OBJ_INSTAGRAM->getOAuthToken($code);
if(isset($data->user->id))
{
$posted_data['user_login'] = $data->user->username;
$posted_data['userId'] = $data->user->id;
$posted_data['user_profile_picture'] = $posted_data['picture'] = $data->user->profile_picture;
$posted_data['first_name'] = $data->user->full_name;
$posted_data['last_name'] = '';
$posted_data['display_name'] = $data->user->full_name;
$verified_flag = 1;
}
}
else if($action_type == 'twitter' || $action_type == 'tumblr')
{
if(!$verified_flag)
{
$posted_data = array();
}
}
if(!$verified_flag && empty($posted_data['user_email']))
{
$error_msg = array( 'status' => 'error', 'message' => esc_html__('Something went wrong. Please try again.', 'ARMember') );
echo json_encode($error_msg);
exit;
}
do_action('arm_before_social_login_callback_' . $action_type, $posted_data);
$user_login = isset($posted_data['user_email']) ? sanitize_email($posted_data['user_email']) : '';
$social_id = isset($posted_data['userId']) ? $posted_data['userId'] : '';
$user_data = array(
'user_login' => $user_login,
'user_email' => isset($posted_data['user_email']) ? sanitize_email($posted_data['user_email']) : '',
'first_name' => isset($posted_data['first_name']) ? sanitize_text_field($posted_data['first_name']) : '',
'last_name' => isset($posted_data['last_name']) ? sanitize_text_field($posted_data['last_name']) : '',
'display_name' => isset($posted_data['display_name']) ? sanitize_text_field($posted_data['display_name']) : '',
'birthday' => isset($posted_data['birthday']) ? sanitize_text_field($posted_data['birthday']) : '',
'gender' => isset($posted_data['gender']) ? sanitize_text_field($posted_data['gender']) : '',
'arm_' . $action_type . '_id' => $social_id,
'picture' => isset($posted_data['picture']) ? sanitize_text_field($posted_data['picture']) : '',
'user_profile_picture' => isset($posted_data['user_profile_picture']) ? sanitize_text_field($posted_data['user_profile_picture']) : '',
'userId' => isset($posted_data['userId']) ? $posted_data['userId'] : '',
);
if (!empty($posted_data['picture'])) {
$user_data[$action_type . '_picture'] = $posted_data['picture'];
}
$user_data = apply_filters('arm_change_user_social_detail_before_login', $user_data, $action_type);
$user_id = $this->arm_social_login_process($user_data, $action_type);
if (!empty($user_id) && $user_id != 0) {
$arm_default_redirection_settings = get_option('arm_redirection_settings');
$arm_default_redirection_settings = maybe_unserialize($arm_default_redirection_settings);
$login_redirection_rules_options = $arm_default_redirection_settings['social'];
if ($login_redirection_rules_options['type'] == 'page') {
$form_redirect_id = (!empty($login_redirection_rules_options['page_id'])) ? $login_redirection_rules_options['page_id'] : '0';
if ($form_redirect_id == 0) {
$all_global_settings = $arm_global_settings->arm_get_all_global_settings();
$page_settings = $all_global_settings['page_settings'];
$form_redirect_id = isset($page_settings['edit_profile_page_id']) ? $page_settings['edit_profile_page_id'] : 0;
}
$redirect_to = $arm_global_settings->arm_get_permalink('', $form_redirect_id);
$redirect_to = apply_filters('arm_modify_redirection_page_external', $redirect_to,$user_id,$form_redirect_id);
} else {
$redirect_to = (!empty($login_redirection_rules_options['url'])) ? $login_redirection_rules_options['url'] : ARM_HOME_URL;
$redirect_to = apply_filters('arm_modify_redirection_page_external', $redirect_to,$user_id,0);
}
$user_info = get_userdata($user_id);
$username = $user_info->user_login;
$redirect_to = str_replace('{ARMCURRENTUSERNAME}', $username, $redirect_to);
$redirect_to = str_replace('{ARMCURRENTUSERID}', $user_id, $redirect_to);
wp_set_auth_cookie($user_id);
$current_user = $this->arm_set_current_member($user_id);
$return = array('status' => 'success', 'type' => 'redirect', 'message' => $redirect_to);
} else {
/* Redirect User To Registration Page. */
$redirect_opt = $social_settings['registration'];
$social_setting_options = isset($social_settings['options']) ? $social_settings['options'] : array();
if (empty($social_setting_options)) {
$one_click_signup = 0;
} else {
$one_click_signup = isset($social_setting_options['arm_one_click_social_signup']) ? $social_setting_options['arm_one_click_social_signup'] : 0;
}
if ($one_click_signup == 1 && $user_data['user_email'] != '') {
$reg_form = NULL;
if (!empty($posted_data['user_profile_picture'])) {
if (file_exists(ABSPATH . 'wp-admin/includes/file.php')) {
require_once(ABSPATH . 'wp-admin/includes/file.php');
$random_no = rand();
$file = MEMBERSHIP_UPLOAD_DIR . '/arm_' . $action_type . '_' . $random_no . '.jpg';
if (file_exists(ABSPATH . 'wp-admin/includes/file.php')) {
require_once(ABSPATH . 'wp-admin/includes/file.php');
if (false === ($creds = request_filesystem_credentials($file, '', false, false) )) {
return true;
}
if (!WP_Filesystem($creds)) {
request_filesystem_credentials($file, $method, true, false);
return true;
}
}
$arm_social_avtar_option = isset($social_settings['options']['social_avatar']) ? $social_settings['options']['social_avatar'] : 0;
if (ini_get('allow_url_fopen') && $arm_social_avtar_option == 1) {
@$img = $wp_filesystem->get_contents($user_data['user_profile_picture']);
@$write_file = $wp_filesystem->put_contents($file, $img, FS_CHMOD_FILE);
$avtar_url = MEMBERSHIP_UPLOAD_URL . '/arm_' . $action_type . '_' . $random_no . '.jpg';
$user_data[$action_type . '_picture'] = $avtar_url;
$user_data['avatar'] = $avtar_url;
}
}
}
if (!empty($social_setting_options['assign_default_plan']) && $arm_subscription_plans->isFreePlanExist($social_setting_options['assign_default_plan'])) {
$user_data['subscription_plan'] = $social_setting_options['assign_default_plan'];
}
$user_id = $arm_member_forms->arm_register_new_member($user_data, $reg_form, 'social_signup');
if (is_numeric($user_id) && !is_array($user_id)) {
wp_set_auth_cookie($user_id);
$this->arm_set_current_member($user_id, $user_login);
update_user_meta($user_id, 'arm_last_login_date', date('Y-m-d H:i:s'));
$ip_address = $ARMember->arm_get_ip_address();
update_user_meta($user_id, 'arm_last_login_ip', $ip_address);
$user_to_pass = wp_get_current_user();
//$userObj = new WP_User($user_id);
$arm_login_from_registration = 1;
do_action('wp_login', $user_login, $user_to_pass);
$arm_default_redirection_settings = get_option('arm_redirection_settings');
$arm_default_redirection_settings = maybe_unserialize($arm_default_redirection_settings);
$login_redirection_rules_options = $arm_default_redirection_settings['social'];
if ($login_redirection_rules_options['type'] == 'page') {
$form_redirect_id = (!empty($login_redirection_rules_options['page_id'])) ? $login_redirection_rules_options['page_id'] : '0';
if ($form_redirect_id == 0) {
$all_global_settings = $arm_global_settings->arm_get_all_global_settings();
$page_settings = $all_global_settings['page_settings'];
$form_redirect_id = isset($page_settings['edit_profile_page_id']) ? $page_settings['edit_profile_page_id'] : 0;
}
$redirect_to = $arm_global_settings->arm_get_permalink('', $form_redirect_id);
$redirect_to = apply_filters('arm_modify_redirection_page_external', $redirect_to,$user_id,$form_redirect_id);
} else {
$redirect_to = (!empty($login_redirection_rules_options['url'])) ? $login_redirection_rules_options['url'] : ARM_HOME_URL;
$redirect_to = apply_filters('arm_modify_redirection_page_external', $redirect_to,$user_id,0);
}
$user_info = get_userdata($user_id);
$username = $user_info->user_login;
$redirect_to = str_replace('{ARMCURRENTUSERNAME}', $username, $redirect_to);
$redirect_to = str_replace('{ARMCURRENTUSERID}', $user_id, $redirect_to);
$return = array('status' => 'success', 'type' => 'redirect', 'message' => $redirect_to);
}
}
else
{
if (!empty($redirect_opt)) {
if (!empty($redirect_opt['form_page'])) {
$redirect_url = get_permalink($redirect_opt['form_page']);
$social_reg_form = $redirect_opt['form'];
$reg_form = new ARM_Form('id', $social_reg_form);
$query_string = "";
if ($reg_form->exists() && !empty($reg_form->fields)) {
if (!empty($fieldValue)) {
$redirect_url = $arm_global_settings->add_query_arg($fieldMeta, $fieldValue, $redirect_url);
}
foreach ($reg_form->fields as $regfield) {
$fieldId = $regfield['arm_form_field_id'];
$fieldMeta = isset($regfield['arm_form_field_option']['meta_key']) ? $regfield['arm_form_field_option']['meta_key'] : '';
if ($fieldMeta == 'first_name') {
if (isset($regfield['arm_form_field_option']['hide_firstname'])) {
if ($regfield['arm_form_field_option']['hide_firstname'] == 1) {
continue;
}
}
} else if ($fieldMeta == 'last_name') {
if (isset($regfield['arm_form_field_option']['hide_lastname'])) {
if ($regfield['arm_form_field_option']['hide_lastname'] == 1) {
continue;
}
}
} else if ($fieldMeta == 'user_login') {
if (isset($regfield['arm_form_field_option']['hide_username'])) {
if ($regfield['arm_form_field_option']['hide_username'] == 1) {
continue;
}
}
}
$fieldValue = '';
if (isset($posted_data[$fieldMeta]) && !empty($posted_data[$fieldMeta])) {
$fieldValue = $posted_data[$fieldMeta];
$redirect_url = $arm_global_settings->add_query_arg($fieldMeta, $fieldValue, $redirect_url);
}
}
}
/* Add Social User Info In URL */
$redirect_url = $arm_global_settings->add_query_arg('arm_' . $action_type . '_id', $social_id, $redirect_url);
$redirect_url = $arm_global_settings->add_query_arg('social_form', $social_reg_form, $redirect_url);
if( !empty($user_data["display_name"]) && $action_type == "insta" || $action_type == "tumblr" ) {
$redirect_url = $arm_global_settings->add_query_arg('display_name', $user_data["display_name"], $redirect_url);
}
if (!empty($posted_data['user_profile_picture'])) {
if (file_exists(ABSPATH . 'wp-admin/includes/file.php')) {
require_once(ABSPATH . 'wp-admin/includes/file.php');
$random_no = rand();
$file = MEMBERSHIP_UPLOAD_DIR . '/arm_' . $action_type . '_' . $random_no . '.jpg';
if (file_exists(ABSPATH . 'wp-admin/includes/file.php')) {
require_once(ABSPATH . 'wp-admin/includes/file.php');
if (false === ($creds = request_filesystem_credentials($file, '', false, false) )) {
return true;
}
if (!WP_Filesystem($creds)) {
request_filesystem_credentials($file, $method, true, false);
return true;
}
}
$arm_social_avtar_option = isset($social_settings['options']['social_avatar']) ? $social_settings['options']['social_avatar'] : 0;
if (ini_get('allow_url_fopen') && $arm_social_avtar_option == 1) {
@$img = $wp_filesystem->get_contents($user_data['user_profile_picture']);
@$write_file = $wp_filesystem->put_contents($file, $img, FS_CHMOD_FILE);
$avtar_url = MEMBERSHIP_UPLOAD_URL . '/arm_' . $action_type . '_' . $random_no . '.jpg';
$redirect_url = $arm_global_settings->add_query_arg($action_type . '_picture', $avtar_url, $redirect_url);
$redirect_url = $arm_global_settings->add_query_arg('avatar', $avtar_url, $redirect_url);
}
}
}
$return = array('status' => 'success', 'type' => 'redirect', 'message' => $redirect_url);
}
}
}
}
/* Return Responce For Twitter & Tumblr Login. */
if ($action_type == 'twitter' || $action_type == 'tumblr' ) {
return $return;
}
}
do_action('arm_after_social_login_callback', $posted_data);
} else {
if (MEMBERSHIP_DEBUG_LOG == true) {
$arm_case_types['shortcode']['protected'] = true;
$arm_case_types['shortcode']['type'] = 'login_via_social_button';
$arm_case_types['shortcode']['message'] = esc_html__('Couldn\'t login with social network', 'ARMember');
$ARMember->arm_debug_response_log('arm_twitter_login_callback', $arm_case_types, $posted_data, $wpdb->last_query, false);
}
}
echo json_encode($return);
exit;
}
}
function arm_social_login_process($login_data = array(), $action_type = '')
{
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_member_forms, $arm_social_feature;
$user_id = 0;
if (!empty($login_data) && $arm_social_feature->isSocialLoginFeature) {
$social_key = 'arm_' . $action_type . '_id';
$user_id = $this->arm_get_user_id_by_meta($social_key, $login_data[$social_key]);
if (empty($user_id) || $user_id == 0) {
$email = $login_data['user_email'];
$user = get_user_by('email', $email);
if (!empty($user)) {
$user_id = $user->ID;
update_user_meta($user_id, $social_key, $login_data[$social_key]);
}
}
}
return $user_id;
}
function arm_login_with_twitter() {
global $wp, $wpdb, $ARMember, $arm_global_settings, $arm_social_feature;
if (isset($_GET['page']) && in_array($_GET['page'], array('arm_login_with_twitter')) && !empty($arm_social_feature->isSocialLoginFeature) ) {
$ARMember->arm_session_start();
$social_options = $this->arm_get_active_social_options();
$customer_key = $social_options['twitter']['customer_key'];
$customer_secret = $social_options['twitter']['customer_secret'];
require_once (MEMBERSHIP_LIBRARY_DIR . '/twitter/OAuth.php');
require_once (MEMBERSHIP_LIBRARY_DIR . '/twitter/twitteroauth.php');
$Twitter = new TwitterOAuth($customer_key, $customer_secret);
$redirect_to = isset($_GET['redirect_to']) ? sanitize_text_field($_GET['redirect_to']) :'';
$CALLBACK_URL = $arm_global_settings->add_query_arg('page', 'arm_twitter_return', rtrim($redirect_to, '/') . '/');
$request_token = $Twitter->getRequestToken($CALLBACK_URL);
/* Saving them into the session */
$request_token['oauth_token'] = isset($request_token['oauth_token']) ? $request_token['oauth_token'] : '';
$request_token['oauth_token_secret'] = isset($request_token['oauth_token_secret']) ? $request_token['oauth_token_secret'] : '';
$_SESSION['arm_tw_oauth_token'] = $request_token['oauth_token'];
$_SESSION['arm_tw_oauth_token_secret'] = $request_token['oauth_token_secret'];
$auth_url = $Twitter->getAuthorizeUrl( $request_token['oauth_token'] );
wp_redirect($auth_url);
die();
}
}
function arm_twitter_login_callback() {
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_member_forms, $arm_case_types, $arm_social_feature;
$posted_data = $_POST;//phpcs:ignore
$slc_return = array();
if (isset($_REQUEST['page']) && in_array($_REQUEST['page'], array('arm_twitter_return')) && !empty($arm_social_feature->isSocialLoginFeature)) {
$ARMember->arm_session_start();
$post_data = array();
$social_options = $this->arm_get_active_social_options();
$tw_conf = $social_options['twitter'];
require_once (MEMBERSHIP_LIBRARY_DIR . '/twitter/OAuth.php');
require_once (MEMBERSHIP_LIBRARY_DIR . '/twitter/twitteroauth.php');
$_SESSION['arm_tw_oauth_token'] = isset($_SESSION['arm_tw_oauth_token']) ? $_SESSION['arm_tw_oauth_token'] : sanitize_text_field( $_REQUEST['oauth_token'] );//phpcs:ignore
$oauth_verifier = isset($_GET['oauth_verifier']) ? sanitize_text_field($_GET['oauth_verifier']) : '';
$_SESSION['arm_tw_oauth_token_secret'] = isset($_SESSION['arm_tw_oauth_token_secret']) ? $_SESSION['arm_tw_oauth_token_secret'] : $oauth_verifier;
$twitteroauth = new TwitterOAuth($tw_conf['customer_key'], $tw_conf['customer_secret'], $_SESSION['arm_tw_oauth_token'], $_SESSION['arm_tw_oauth_token_secret']);
/* Let's request the access token */
$access_token = $twitteroauth->getAccessToken($oauth_verifier);
/* Save it in a session var */
$_SESSION['access_token'] = $access_token;
$connection = new TwitterOAuth($tw_conf['customer_key'], $tw_conf['customer_secret'], $access_token['oauth_token'], $access_token['oauth_token_secret']);
/* Let's get the user's info */
$params = array('include_entities' => 'false', 'skip_status' => 'true','include_email' => 'true');
$user_info = $connection->get('account/verify_credentials', $params);
if (isset($user_info->error) || !isset($user_info->id) || empty($oauth_verifier)) {
if (MEMBERSHIP_DEBUG_LOG == true) {
$arm_case_types['shortcode']['protected'] = true;
$arm_case_types['shortcode']['type'] = 'login_via_twitter';
$arm_case_types['shortcode']['message'] = esc_html__('Couldn\'t login with twitter', 'ARMember');
$ARMember->arm_debug_response_log('arm_twitter_login_callback', $arm_case_types, $user_info, $wpdb->last_query, false);
}
echo "<script data-cfasync='false'>alert('" . esc_html__('There is an error while connecting twitter, Please try again.', 'ARMember') . "');window.close();</script>";
exit;
} else {
$full_name = explode(' ', $user_info->name);
$user_info->id = (isset($user_info->id) ? $user_info->id : '');
$post_data = array(
'action' => 'arm_social_login_callback',
'action_type' => 'twitter',
'id' => $user_info->id,
'user_login' => (isset($user_info->screen_name) ? $user_info->screen_name : ''),
'user_email' => (isset($user_info->email) ? $user_info->email : ''),
'first_name' => $full_name[0],
'last_name' => (isset($full_name[1]) ? $full_name[1] : ''),
'display_name' => (isset($user_info->name) ? $user_info->name : ''),
'oauth_verifier' => $oauth_verifier,
);
$post_data['picture'] = $user_info->profile_image_url;
$post_data['user_profile_picture'] = $user_info->profile_image_url;
$user_id = $this->arm_get_user_id_by_meta('arm_twitter_id', $user_info->id);
if (!empty($user_id) && $user_id != 0) {
$user_detail = new WP_User($user_id);
$post_data['user_email'] = $user_detail->user_email;
} else {
/* Needs to create new user info */
}
/* Send User Data to Social Process Function. */
$verified_flag = 1;
$slc_return = $this->arm_social_login_callback($post_data, $verified_flag);
}
/* Unset Session Details. */
unset($_SESSION['customer_key']);
unset($_SESSION['customer_secret']);
unset($_SESSION['access_token']);
if ($slc_return['status'] == 'success') {
if ($slc_return['type'] == 'redirect') {
$redirect_url = $slc_return['message'];
} else {
$redirect_url = ARM_HOME_URL;
}
echo "<script data-cfasync='false'>
window.opener.document.getElementById('arm_social_twitter_container').style.display = 'none';
window.opener.document.getElementById('arm_social_connect_loader').style.display = 'block';
window.opener.location.href='" . esc_attr($redirect_url) . "';window.close();
</script>";
exit;
} else {
$fail_msg = (!empty($arm_global_settings->common_message['social_login_failed_msg'])) ? $arm_global_settings->common_message['social_login_failed_msg'] : esc_html__('Login Failed, please try again.', 'ARMember');
$fail_msg = (!empty($fail_msg)) ? $fail_msg : esc_html__('Sorry, Something went wrong. Please try again.', 'ARMember');
echo "<script data-cfasync='false'>alert('" . esc_html($fail_msg) . "');window.close();</script>";
exit;
}
}
return;
}
function arm_login_with_google_signin()
{
global $wp, $wpdb, $ARMember, $arm_global_settings, $arm_social_feature;
if (isset($_GET['arm_google_action']) && in_array($_GET['arm_google_action'], array('arm_google_signin_response')) && !empty($arm_social_feature->isSocialLoginFeature) ) {
$social_options = $this->arm_get_active_social_options();
$client_id = $social_options['google']['client_id'];
$client_secret = $social_options['google']['client_secret'];
$access_token = isset($_GET['code']) ? sanitize_text_field($_GET['code']) : '';
$args = array(
'body' => array(
'code' => $access_token,
'client_id' => $client_id,
'client_secret' => $client_secret,
'redirect_uri' => site_url( '?arm_google_action=arm_google_signin_response' ),
'grant_type' => 'authorization_code',
),
);
$arm_google_auth_response = wp_remote_post( 'https://www.googleapis.com/oauth2/v4/token', $args );
$arm_google_auth_response = json_decode( $arm_google_auth_response['body'], true );
if( !is_wp_error($arm_google_auth_response) && isset($arm_google_auth_response['access_token'])) {
$access_token = $arm_google_auth_response['access_token'];
$expire_time = $arm_google_auth_response['expires_in'];
echo "<script type='text/javascript'>
if( window.opener.document.getElementById('arm_social_google_access_token') != null ){
window.opener.document.getElementById('arm_social_google_access_token').value = '". esc_attr($access_token) ."';
}
window.close();
</script>";
}
else
{
echo "<script data-cfasync='false'>alert('" . esc_html__('There is an error while connecting Google SignIn, Please try again.', 'ARMember') . "');window.close();</script>";
}
die();
}
}
function arm_google_login_callback()
{
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_member_forms, $arm_case_types, $arm_social_feature;
if( !empty($arm_social_feature->isSocialLoginFeature) )
{
$posted_data = $_POST;//phpcs:ignore
$access_token = isset($_REQUEST['access_token']) ? sanitize_text_field($_REQUEST['access_token']) : '';
$arm_google_profile_response = array();
$param = array(
'headers' => array(
'Authorization' => 'Bearer ' . $access_token,
),
);
$url = 'https://www.googleapis.com/userinfo/v2/me';
$raw_response = wp_remote_get($url,$param);
$arm_google_profile_response['email_response'] = json_decode($raw_response['body']);
if( !is_wp_error($arm_google_profile_response) ){
echo json_encode($arm_google_profile_response);
} else {
echo json_encode(array('error'=> true));
}
}
die;
}
function arm_login_with_linkedin() {
global $wp, $wpdb, $ARMember, $arm_global_settings, $arm_social_feature;
if (isset($_GET['action']) && in_array($_GET['action'], array('arm_login_with_linkedin')) && !empty($arm_social_feature->isSocialLoginFeature) ) {
$social_options = $this->arm_get_active_social_options();
$client_id = $social_options['linkedin']['client_id'];
$client_secret = $social_options['linkedin']['client_secret'];
$access_token = isset($_GET['code']) ? sanitize_text_field($_GET['code']) : '';
$access_token_url = 'https://www.linkedin.com/oauth/v2/accessToken';
$arm_redirect_url = $arm_global_settings->add_query_arg('action', sanitize_text_field($_GET['action']), ARM_HOME_URL);
$api_params = array(
'grant_type' => 'authorization_code',
'code' => $access_token,
'redirect_uri' => $arm_redirect_url,
'client_id' => $client_id,
'client_secret' =>$client_secret
);
$arm_linkedin_auth_response = wp_remote_post($access_token_url,array(
'timeout' => 15,
'sslverify' => false,
'body' => $api_params)
);
if( !is_wp_error($arm_linkedin_auth_response) && isset($arm_linkedin_auth_response['response']) && $arm_linkedin_auth_response['response']['code'] == '200' && isset($arm_linkedin_auth_response['body']) ){
$response_body = json_decode($arm_linkedin_auth_response['body'],true);
$access_token = $response_body['access_token'];
$expire_time = $response_body['expires_in'];
echo "<script type='text/javascript'>
if( window.opener.document.getElementById('arm_social_linkedin_access_token') != null ){
window.opener.document.getElementById('arm_social_linkedin_access_token').value = '". esc_attr($access_token) ."';
}
window.close();
</script>";
}
else
{
echo "<script data-cfasync='false'>alert('" . esc_html__('There is an error while connecting linkedin, Please try again.', 'ARMember') . "');window.close();</script>";
}
die();
}
}
function arm_linkedin_login_callback() {
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_member_forms, $arm_case_types, $arm_social_feature;
if( !empty($arm_social_feature->isSocialLoginFeature) )
{
//$ARMember->arm_check_user_cap('',0,1);
$posted_data = $_POST;//phpcs:ignore
$access_token = isset($_REQUEST['access_token']) ? sanitize_text_field($_REQUEST['access_token']) : '';
$arm_linkedin_profile_response = array();
$arm_linkedin_get_url = 'https://api.linkedin.com/v2/userinfo';
$arm_linkedin_profile_resp = wp_remote_get($arm_linkedin_get_url,array(
'timeout' => 15,
'sslverify' => false,
'headers' => array(
'Authorization' => 'Bearer '.$access_token
),
));
if( !is_wp_error($arm_linkedin_profile_resp) && isset($arm_linkedin_profile_resp['response']) && $arm_linkedin_profile_resp['response']['code'] == '200' ){
$arm_linkedin_profile_response['profile_response'] = json_decode($arm_linkedin_profile_resp['body']);
echo json_encode($arm_linkedin_profile_response);
} else {
echo json_encode(array('error'=> true));
}
}
die;
}
function arm_login_with_tumblr() {
global $wp, $wpdb, $ARMember, $arm_global_settings, $arm_social_feature;
if (isset($_GET['page']) && in_array($_GET['page'], array('arm_login_with_tumblr')) && !empty($arm_social_feature->isSocialLoginFeature) ) {
$ARMember->arm_session_start();
$social_options = $this->arm_get_active_social_options();
$consumer_key = $social_options['tumblr']['consumer_key'];
$consumer_secret = $social_options['tumblr']['consumer_secret'];
require_once (MEMBERSHIP_LIBRARY_DIR . '/tumblr/tumblroauth.php');
$Tumblr = new TumblrOAuth($consumer_key, $consumer_secret);
$redirect_to = isset($_GET['redirect_to']) ? sanitize_text_field($_GET['redirect_to']) : '';
$CALLBACK_URL = $arm_global_settings->add_query_arg('page', 'arm_tumblr_return', rtrim($redirect_to, '/')
. '/');
$request_token = $Tumblr->Request_Token($CALLBACK_URL);
/* Saving them into the session */
$request_token['oauth_token'] = isset($request_token['oauth_token']) ? $request_token['oauth_token'] : '';
$request_token['oauth_token_secret'] = isset($request_token['oauth_token_secret']) ? $request_token['oauth_token_secret'] : '';
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
$auth_url ='https://tumblr.com/oauth/authorize?oauth_token='.$request_token['oauth_token'];
wp_redirect($auth_url);
die();
}
}
function arm_tumblr_login_callback() {
global $wp, $wpdb, $ARMember, $arm_slugs, $arm_global_settings, $arm_member_forms, $arm_social_feature;
$posted_data = $_POST;//phpcs:ignore
$slc_return = array();
if (isset($_REQUEST['page']) && in_array($_REQUEST['page'], array('arm_tumblr_return')) && !empty($arm_social_feature->isSocialLoginFeature) ) {
$ARMember->arm_session_start();
$post_data = array();
$social_options = $this->arm_get_active_social_options();
$tu_conf = $social_options['tumblr'];
require_once (MEMBERSHIP_LIBRARY_DIR . '/tumblr/tumblroauth.php');
$_SESSION['oauth_token'] = isset($_SESSION['oauth_token']) ? $_SESSION['oauth_token'] : ' ';
$_SESSION['oauth_token_secret'] = isset($_SESSION['oauth_token_secret']) ? $_SESSION['oauth_token_secret'] : '';
$oauth_verifier = isset($_GET['oauth_verifier']) ? sanitize_text_field($_GET['oauth_verifier']) : '';
$tumblroauth = new TumblrOAuth($tu_conf['consumer_key'], $tu_conf['consumer_secret'] );
/* Let's request the access token */
$access_token = $tumblroauth->getAccessToken($_SESSION['oauth_token'],$_SESSION['oauth_token_secret'],$oauth_verifier);
/* Let's request the user information */
if(isset($access_token['oauth_token']) && $access_token['oauth_token_secret']){
$user_info = $tumblroauth->get($access_token['oauth_token'],$access_token['oauth_token_secret']);
}else {
echo "<script data-cfasync='false'>alert('" . esc_html__('There is an error while connecting tumblr, Please try again.', 'ARMember') . "');window.close();</script>";
}
if(isset($user_info->errors) && !isset($user_info->meta)) {
if (MEMBERSHIP_DEBUG_LOG == true) {
$arm_case_types['shortcode']['protected'] = true;
$arm_case_types['shortcode']['type'] = 'login_via_tumblr';
$arm_case_types['shortcode']['message'] = esc_html__('Couldn\'t login with tumblr', 'ARMember');
$ARMember->arm_debug_response_log('arm_tumblr_login_callback', $arm_case_types, $user_info, $wpdb->last_query, false);
}
echo "<script data-cfasync='false'>alert('" . esc_html__('There is an error while connecting tumblr, Please try again.', 'ARMember') . "');window.close();</script>";
} elseif(isset($user_info->meta) && $user_info->meta->status == 200) {
$user_response = $user_info->response;
$full_name = isset($user_response->user->name) ? $user_response->user->name : '';
$user_id = isset($user_response->user->blogs[0]->uuid) ? $user_response->user->blogs[0]->uuid : '';
$profile_url = isset($user_response->user->blogs[0]->theme->header_image) ? $user_response->user->blogs[0]->theme->header_image : '';
$post_data = array(
'action' => 'arm_social_login_callback',
'action_type' => 'tumblr',
'id' => $user_id,
'first_name' => $full_name,
'display_name' => $full_name,
'redirect_to' => ARM_HOME_URL,
'user_profile_picture'=> $profile_url,
'picture' => $profile_url,
'user_login' => $full_name,
);
$verified_flag = 1;
$slc_return = $this->arm_social_login_callback($post_data, $verified_flag);
}
/* Unset Session Details. */
unset($_SESSION['oauth_token']);
unset($_SESSION['oauth_token_secret']);
if (isset($slc_return['status']) && $slc_return['status'] == 'success') {
if ($slc_return['type'] == 'redirect') {
$redirect_url = $slc_return['message'];
} else {
$redirect_url = ARM_HOME_URL;
}
echo "<script data-cfasync='false'>
window.opener.document.getElementById('arm_social_tumblr_container').style.display = 'none';
window.opener.document.getElementById('arm_social_connect_loader').style.display = 'block';
window.opener.location.href='" . esc_attr($redirect_url) . "';window.close();
</script>";
exit;
} else {
$fail_msg = (!empty($arm_global_settings->common_message['social_login_failed_msg'])) ? $arm_global_settings->common_message['social_login_failed_msg'] : esc_html__('Login Failed, please try again.', 'ARMember');
$fail_msg = (!empty($fail_msg)) ? $fail_msg : esc_html__('Sorry, Something went wrong. Please try again.', 'ARMember');
echo "<script data-cfasync='false'>alert('" . esc_html($fail_msg) . "');window.close();</script>";
exit;
}
}
return;
}
function get_rand_alphanumeric($length) {
if ($length > 0) {
$rand_id = "";
for ($i = 1; $i <= $length; $i++) {
mt_srand((double) microtime() * 1000000);
$num = mt_rand(1, 36);
$rand_id .= $this->assign_rand_value($num);
}
}
return $rand_id;
}
function assign_rand_value($num) {
switch ($num) {
case "1" : $rand_value = "a";
break;
case "2" : $rand_value = "b";
break;
case "3" : $rand_value = "c";
break;
case "4" : $rand_value = "d";
break;
case "5" : $rand_value = "e";
break;
case "6" : $rand_value = "f";
break;
case "7" : $rand_value = "g";
break;
case "8" : $rand_value = "h";
break;
case "9" : $rand_value = "i";
break;
case "10" : $rand_value = "j";
break;
case "11" : $rand_value = "k";
break;
case "12" : $rand_value = "l";
break;
case "13" : $rand_value = "m";
break;
case "14" : $rand_value = "n";
break;
case "15" : $rand_value = "o";
break;
case "16" : $rand_value = "p";
break;
case "17" : $rand_value = "q";
break;
case "18" : $rand_value = "r";
break;
case "19" : $rand_value = "s";
break;
case "20" : $rand_value = "t";
break;
case "21" : $rand_value = "u";
break;
case "22" : $rand_value = "v";
break;
case "23" : $rand_value = "w";
break;
case "24" : $rand_value = "x";
break;
case "25" : $rand_value = "y";
break;
case "26" : $rand_value = "z";
break;
case "27" : $rand_value = "0";
break;
case "28" : $rand_value = "1";
break;
case "29" : $rand_value = "2";
break;
case "30" : $rand_value = "3";
break;
case "31" : $rand_value = "4";
break;
case "32" : $rand_value = "5";
break;
case "33" : $rand_value = "6";
break;
case "34" : $rand_value = "7";
break;
case "35" : $rand_value = "8";
break;
case "36" : $rand_value = "9";
break;
}
return $rand_value;
}
function CheckpluginStatus($mypluginsarray, $pluginname, $attr, $purchase_addon, $plugin_type, $install_url, $compatible_version, $armember_version, $is_config = false, $config_url = '') {
foreach ($mypluginsarray as $pluginarr) {
$response = "";
if ($pluginname == $pluginarr[$attr]) {
if ($pluginarr['is_active'] == 1) {
$response = "ACTIVE";
$actionurl = $pluginarr["deactivation_url"];
break;
} else {
$response = "NOT ACTIVE";
$actionurl = $pluginarr["activation_url"];
break;
}
} else {
if ($plugin_type == "free") {
$response = "NOT INSTALLED FREE";
$actionurl = $install_url;
} else if ($plugin_type == "paid") {
$response = "NOT INSTALLED PAID";
$actionurl = $install_url;
}
}
}
$myicon = "";
$divclassname = "";
$arm_plugin_name = explode('/', $pluginname);
if( isset( $is_config ) && true == $is_config ){
$deactivate_btn_class = 'arm_feature_deactivate_btn';
$config_button_html = '<a href="'.esc_url($config_url).'" class="arm_feature_configure_btn">Configure</a>';
} else {
$deactivate_btn_class = 'arm_feature_deactivate_btn arm_no_config_feature_btn';
$config_button_html = '';
}
if ($response == "NOT INSTALLED FREE") {
$myicon = '<div class="arm_feature_button_activate_wrapper arm_install_btn "><a id="arm_free_addon" href="javascript:void(0);" class="arm_feature_activate_btn" data-name=' . $purchase_addon . ' data-plugin=' . $arm_plugin_name[0] . ' data-href="javascript:void(0);" data-version="'.$compatible_version.'" data-arm_version="'.$armember_version.'" data-type ="free_addon">Install</a><span class="arm_addon_loader">
<svg class="arm_circular" viewBox="0 0 60 60">
<circle class="path" cx="25px" cy="23px" r="18" fill="none" stroke-width="4" stroke-miterlimit="7"></circle>
</svg>
</span></div>';
$myicon .= '<div class="arm_feature_button_activate_wrapper hidden_section">
<a class="arm_feature_activate_btn arm_active_addon" data-file="' . esc_attr($pluginname) . '" href="javascript:void(0);" data-version="'.$compatible_version.'" data-arm_version="'.esc_attr($armember_version).'" data-type ="activate_addon">Activate</a><span class="arm_addon_loader">
<svg class="arm_circular" viewBox="0 0 60 60">
<circle class="path" cx="25px" cy="23px" r="18" fill="none" stroke-width="4" stroke-miterlimit="7"></circle>
</svg>
</span></div>';
$myicon .= '<div class="arm_feature_button_deactivate_wrapper hidden_section"><a id="arm_feature_deactivate_btn" class="'.$deactivate_btn_class.' arm_deactive_addon" data-file="' . $pluginname . '" href="javascript:void(0);" data-version="'.$compatible_version.'" data-arm_version="'.$armember_version.'" data-type ="deactivate_addon">Deactivate</a>'.$config_button_html.'<span class="arm_addon_loader">
<svg class="arm_circular" viewBox="0 0 60 60">
<circle class="path" cx="25px" cy="23px" r="18" fill="none" stroke-width="4" stroke-miterlimit="7"></circle>
</svg>
</span></div>';
} else if ($response == "NOT INSTALLED PAID") {
$myicon = '<div class="arm_feature_button_activate_wrapper "><a class="arm_feature_activate_btn" href=javascript:void(0); data-version="'.$compatible_version.'" data-arm_version="'.$armember_version.'" data-type ="paid_addon" data-href="'.$actionurl.'"> Get It</a></div>';
} else if ($response == "ACTIVE") {
$myicon = '<div class="arm_feature_button_deactivate_wrapper"><a id="arm_feature_deactivate_btn" class="'.$deactivate_btn_class.' arm_deactive_addon" data-file="' . $pluginname . '" href="javascript:void(0);" data-version="'.$compatible_version.'" data-arm_version="'.$armember_version.'" data-type ="deactivate_addon">Deactivate</a>'.$config_button_html.'<span class="arm_addon_loader">
<svg class="arm_circular" viewBox="0 0 60 60">
<circle class="path" cx="25px" cy="23px" r="18" fill="none" stroke-width="4" stroke-miterlimit="7"></circle>
</svg>
</span></div>';
$myicon .= '<div class="arm_feature_button_activate_wrapper hidden_section">
<a class="arm_feature_activate_btn arm_active_addon" data-file="' . esc_attr($pluginname) . '" href="javascript:void(0);" data-version="'.esc_attr($compatible_version).'" data-arm_version="'.esc_attr($armember_version).'" data-type ="activate_addon">Activate</a><span class="arm_addon_loader">
<svg class="arm_circular" viewBox="0 0 60 60">
<circle class="path" cx="25px" cy="23px" r="18" fill="none" stroke-width="4" stroke-miterlimit="7"></circle>
</svg>
</span></div>';
} else if ($response == "NOT ACTIVE") {
$myicon = '<div class="arm_feature_button_activate_wrapper "><a class="arm_feature_activate_btn arm_active_addon" data-file="' . $pluginname . '" href="javascript:void(0);" data-version="'.$compatible_version.'" data-arm_version="'.$armember_version.'" data-type ="activate_addon">Activate</a><span class="arm_addon_loader">
<svg class="arm_circular" viewBox="0 0 60 60">
<circle class="path" cx="25px" cy="23px" r="18" fill="none" stroke-width="4" stroke-miterlimit="7"></circle>
</svg>
</span></div>';
$myicon .= '<div class="arm_feature_button_deactivate_wrapper hidden_section"><a id="arm_feature_deactivate_btn" class="'.esc_attr($deactivate_btn_class).' arm_deactive_addon" data-file="' . esc_attr($pluginname) . '" href="javascript:void(0);" data-version="'.esc_attr($compatible_version).'" data-arm_version="'.esc_attr($armember_version).'" data-type ="deactivate_addon">Deactivate</a>'.$config_button_html.'<span class="arm_addon_loader">
<svg class="arm_circular" viewBox="0 0 60 60">
<circle class="path" cx="25px" cy="23px" r="18" fill="none" stroke-width="4" stroke-miterlimit="7"></circle>
</svg>
</span></div>';
}
return $myicon;
}
function addons_page( $force_check = 0 ) {
$armember_addons_page = get_transient("arm_addons_listing_data_page");
if(false === $armember_addons_page || $force_check == 1) {
$plugins = get_plugins();
$installed_plugins = array();
foreach ($plugins as $key => $plugin) {
$is_active = is_plugin_active($key);
$installed_plugin = array("plugin" => $key, "name" => $plugin["Name"], "is_active" => $is_active);
$installed_plugin["activation_url"] = $is_active ? "" : wp_nonce_url("plugins.php?action=activate&plugin={$key}", "activate-plugin_{$key}");
$installed_plugin["deactivation_url"] = !$is_active ? "" : wp_nonce_url("plugins.php?action=deactivate&plugin={$key}", "deactivate-plugin_{$key}");
$installed_plugins[] = $installed_plugin;
}
global $arm_version;
$bloginformation = array();
$str = $this->get_rand_alphanumeric(10);
if (is_multisite())
$multisiteenv = "Multi Site";
else
$multisiteenv = "Single Site";
$addon_listing = 1;
$bloginformation[] = get_bloginfo('name');
$bloginformation[] = get_bloginfo('description');
$bloginformation[] = ARM_HOME_URL;
$bloginformation[] = get_bloginfo('admin_email');
$bloginformation[] = get_bloginfo('version');
$bloginformation[] = get_bloginfo('language');
$bloginformation[] = $arm_version;
$bloginformation[] = sanitize_text_field($_SERVER['REMOTE_ADDR']); //phpcs:ignore
$bloginformation[] = $str;
$bloginformation[] = $multisiteenv;
$bloginformation[] = $addon_listing;
$valstring = implode("||", $bloginformation);
$encodedval = base64_encode($valstring);
$urltopost = 'https://www.armemberplugin.com/armember_addons/addon_list.php';
$raw_response = wp_remote_post($urltopost, array(
'method' => 'POST',
'timeout' => 45,
'redirection' => 5,
'httpversion' => '1.0',
'blocking' => true,
'headers' => array(),
'body' => array('wpversion' => $encodedval),
'cookies' => array()
)
);
if (is_wp_error($raw_response) || $raw_response['response']['code'] != 200) {
return "0|^^|<div class='error_message' style='margin-top:100px; padding:20px;'>" . esc_html__("Add-On listing is currently unavailable. Please try again later.", 'ARMember') . "</div>";
} else {
set_transient("arm_addons_listing_data_page", $raw_response['body'], DAY_IN_SECONDS);
return "1|^^|" . $raw_response['body'];
}
} else {
return "1|^^|" . $armember_addons_page;
}
}
function arm_install_plugin_install_status($api, $loop = false) {
// This function is called recursively, $loop prevents further loops.
if (is_array($api))
$api = (object) $api;
// Default to a "new" plugin
$status = 'install';
$url = false;
$update_file = false;
/*
* Check to see if this plugin is known to be installed,
* and has an update awaiting it.
*/
$version = '';
$update_plugins = get_site_transient('update_plugins');
if (isset($update_plugins->response)) {
foreach ((array) $update_plugins->response as $file => $plugin) {
if ($plugin->slug === $api->slug) {
$status = 'update_available';
$update_file = $file;
$version = $plugin->new_version;
if (current_user_can('update_plugins'))
$url = wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=' . $update_file), 'upgrade-plugin_' . $update_file);
break;
}
}
}
if ('install' == $status) {
if (is_dir(WP_PLUGIN_DIR . '/' . $api->slug)) {
$installed_plugin = get_plugins('/' . $api->slug);
if (empty($installed_plugin)) {
if (current_user_can('install_plugins'))
$url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug);
} else {
$key = array_keys($installed_plugin);
$key = reset($key); //Use the first plugin regardless of the name, Could have issues for multiple-plugins in one directory if they share different version numbers
$update_file = $api->slug . '/' . $key;
if (version_compare($api->version, $installed_plugin[$key]['Version'], '=')) {
$status = 'latest_installed';
} elseif (version_compare($api->version, $installed_plugin[$key]['Version'], '<')) {
$status = 'newer_installed';
$version = $installed_plugin[$key]['Version'];
} else {
//If the above update check failed, Then that probably means that the update checker has out-of-date information, force a refresh
if (!$loop) {
delete_site_transient('update_plugins');
wp_update_plugins();
return arm_install_plugin_install_status($api, true);
}
}
}
} else {
// "install" & no directory with that slug
if (current_user_can('install_plugins'))
$url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug);
}
}
if (isset($_GET['from']))
$url .= '&from=' . urlencode(wp_unslash(sanitize_text_field($_GET['from'])));
$file = $update_file;
return compact('status', 'url', 'version', 'file');
}
function arm_set_current_member($user_id, $username='')
{
return wp_set_current_user($user_id, $username);
}
}
}
global $arm_social_feature;
$arm_social_feature = new ARM_social_feature();
/*
wp_unslash function to remove slashes. default in wordpress 4.6
*/
if (!function_exists('wp_unslash')) {
function wp_unslash($value) {
return stripslashes_deep($value);
}
}
if (!class_exists('Automatic_Upgrader_Skin')) {
if (version_compare($GLOBALS['wp_version'], '4.6', '<'))
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
else
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader-skin.php';
if (version_compare($GLOBALS['wp_version'], '3.8', '<')) {
class Automatic_Upgrader_Skin extends WP_Upgrader_Skin {
protected $messages = array();
/**
* Determines whether the upgrader needs FTP/SSH details in order to connect
* to the filesystem.
*
* @since 3.7.0
* @since 4.6.0 The `$context` parameter default changed from `false` to an empty string.
*
* @see request_filesystem_credentials()
*
* @param bool $error Optional. Whether the current request has failed to connect.
* Default false.
* @param string $context Optional. Full path to the directory that is tested
* for being writable. Default empty.
* @param bool $allow_relaxed_file_ownership Optional. Whether to allow Group/World writable. Default false.
* @return bool True on success, false on failure.
*/
public function request_filesystem_credentials($error = false, $context = '', $allow_relaxed_file_ownership = false) {
if ($context) {
$this->options['context'] = $context;
}
// TODO: fix up request_filesystem_credentials(), or split it, to allow us to request a no-output version
// This will output a credentials form in event of failure, We don't want that, so just hide with a buffer
ob_start();
$result = parent::request_filesystem_credentials($error, $context, $allow_relaxed_file_ownership);
ob_end_clean();
return $result;
}
/**
* @access public
*
* @return array
*/
public function get_upgrade_messages() {
return $this->messages;
}
/**
* @param string|array|WP_Error $data
*/
public function feedback($data) {
if (is_wp_error($data)) {
$string = $data->get_error_message();
} elseif (is_array($data)) {
return;
} else {
$string = $data;
}
if (!empty($this->upgrader->strings[$string]))
$string = $this->upgrader->strings[$string];
if (strpos($string, '%') !== false) {
$args = func_get_args();
$args = array_splice($args, 1);
if (!empty($args))
$string = vsprintf($string, $args);
}
$string = trim($string);
// Only allow basic HTML in the messages, as it'll be used in emails/logs rather than direct browser output.
$string = wp_kses($string, array(
'a' => array(
'href' => true
),
'br' => true,
'em' => true,
'strong' => true,
));
if (empty($string))
return;
$this->messages[] = $string;
}
/**
* @access public
*/
public function header() {
ob_start();
}
/**
* @access public
*/
public function footer() {
$output = ob_get_clean();
if (!empty($output))
$this->feedback($output);
}
}
}
}
if (!class_exists('WP_Ajax_Upgrader_Skin')) {
if (version_compare($GLOBALS['wp_version'], '4.6', '<'))
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
else
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader-skin.php';
if (version_compare($GLOBALS['wp_version'], '4.6', '<')) {
class WP_Ajax_Upgrader_Skin extends Automatic_Upgrader_Skin {
/**
* Holds the WP_Error object.
*
* @since 4.6.0
* @access protected
* @var null|WP_Error
*/
protected $errors = null;
/**
* Constructor.
*
* @since 4.6.0
* @access public
*
* @param array $args Options for the upgrader, see WP_Upgrader_Skin::__construct().
*/
public function __construct($args = array()) {
parent::__construct($args);
$this->errors = new WP_Error();
}
/**
* Retrieves the list of errors.
*
* @since 4.6.0
* @access public
*
* @return WP_Error Errors during an upgrade.
*/
public function get_errors() {
return $this->errors;
}
/**
* Retrieves a string for error messages.
*
* @since 4.6.0
* @access public
*
* @return string Error messages during an upgrade.
*/
public function get_error_messages() {
$messages = array();
foreach ($this->errors->get_error_codes() as $error_code) {
if ($this->errors->get_error_data($error_code) && is_string($this->errors->get_error_data($error_code))) {
$messages[] = $this->errors->get_error_message($error_code) . ' ' . esc_html(strip_tags($this->errors->get_error_data($error_code)));
} else {
$messages[] = $this->errors->get_error_message($error_code);
}
}
return implode(', ', $messages);
}
/**
* Stores a log entry for an error.
*
* @since 4.6.0
* @access public
*
* @param string|WP_Error $errors Errors.
*/
public function error($errors) {
if (is_string($errors)) {
$string = $errors;
if (!empty($this->upgrader->strings[$string])) {
$string = $this->upgrader->strings[$string];
}
if (false !== strpos($string, '%')) {
$args = func_get_args();
$args = array_splice($args, 1);
if (!empty($args)) {
$string = vsprintf($string, $args);
}
}
// Count existing errors to generate an unique error code.
$errors_count = count($errors->get_error_codes());
$errors_count_plus_one = $errors_count + 1;
$this->errors->add('unknown_upgrade_error_'.$errors_count_plus_one, $string);
} elseif (is_wp_error($errors)) {
foreach ($errors->get_error_codes() as $error_code) {
$this->errors->add($error_code, $errors->get_error_message($error_code), $errors->get_error_data($error_code));
}
}
$args = func_get_args();
call_user_func_array(array($this, 'parent::error'), $args);
}
/**
* Stores a log entry.
*
* @since 4.6.0
* @access public
*
* @param string|array|WP_Error $data Log entry data.
*/
public function feedback($data) {
if (is_wp_error($data)) {
foreach ($data->get_error_codes() as $error_code) {
$this->errors->add($error_code, $data->get_error_message($error_code), $data->get_error_data($error_code));
}
}
$args = func_get_args();
call_user_func_array(array($this, 'parent::feedback'), $args);
}
}
}
}
if (!function_exists('wp_register_plugin_realpath')) {
function wp_register_plugin_realpath($file) {
global $wp_plugin_paths;
// Normalize, but store as static to avoid recalculation of a constant value
static $wp_plugin_path = null, $wpmu_plugin_path = null;
if (!isset($wp_plugin_path)) {
$wp_plugin_path = wp_normalize_path(WP_PLUGIN_DIR);
$wpmu_plugin_path = wp_normalize_path(WPMU_PLUGIN_DIR);
}
$plugin_path = wp_normalize_path(dirname($file));
$plugin_realpath = wp_normalize_path(dirname(realpath($file)));
if ($plugin_path === $wp_plugin_path || $plugin_path === $wpmu_plugin_path) {
return false;
}
if ($plugin_path !== $plugin_realpath) {
$wp_plugin_paths[$plugin_path] = $plugin_realpath;
}
return true;
}
}
if (!function_exists('wp_normalize_path')) {
function wp_normalize_path($path) {
$path = str_replace('\\', '/', $path);
$path = preg_replace('|(?<=.)/+|', '/', $path);
if (':' === substr($path, 1, 1)) {
$path = ucfirst($path);
}
return $path;
}
}