function xfac_edit_user_profile_update($wpUserId) { $config = xfac_option_getConfig(); if (empty($config)) { return; } if (!empty($_POST['xfac_disconnect'])) { foreach ($_POST['xfac_disconnect'] as $recordId => $confirmed) { if ($confirmed) { $record = xfac_user_getRecordById($recordId); if ($record->user_id == $wpUserId) { xfac_user_deleteRecord($record); } } } } if (!empty($_POST['xfac_connect'])) { $xfUserId = intval($_POST['xfac_connect']); if ($xfUserId > 0) { $adminAccessToken = xfac_user_getAdminAccessToken($config); if (!empty($adminAccessToken)) { $userAccessToken = xfac_api_postOauthTokenAdmin($config, $adminAccessToken, $xfUserId); if (!empty($userAccessToken)) { $result = xfac_api_getUsersMe($config, $userAccessToken['access_token']); if (!empty($result['user']['user_id'])) { xfac_syncLogin_syncRole($config, get_user_by('id', $wpUserId), $result['user']); if (isset($_POST['role'])) { // because we have already sync'd role, ignore role submitted via POST unset($_POST['role']); } xfac_user_updateRecord($wpUserId, $config['root'], $xfUserId, $result['user'], $userAccessToken); } } } } } }
function xfac_options_init() { if (!empty($_REQUEST['do'])) { switch ($_REQUEST['do']) { case 'xfac_xf_guest_account': require xfac_template_locateTemplate('dashboard_xfac_xf_guest_account.php'); return; } } // prepare common data $config = xfac_option_getConfig(); $meta = array(); if (!empty($config)) { $meta = xfac_option_getMeta($config); } $currentWpUser = wp_get_current_user(); $currentWpUserRecords = xfac_user_getRecordsByUserId($currentWpUser->ID); $adminAccessToken = xfac_user_getAdminAccessToken($config); // setup sections $sections = array(array('id' => 'xfac_api', 'title' => __('API Configuration', 'xenforo-api-consumer'))); if (!empty($meta['linkIndex'])) { $sections = array_merge($sections, array(array('id' => 'xfac_post_comment', 'title' => __('Post & Comment', 'xenforo-api-consumer')), array('id' => 'xfac_user_role', 'title' => __('User & Role', 'xenforo-api-consumer')), array('id' => 'xfac_ui', 'title' => __('Appearances', 'xenforo-api-consumer')))); } // always show advanced sections $sections[] = array('id' => 'xfac_advanced', 'title' => __('Advanced', 'xenforo-api-consumer')); // setup tabs $tab = 'xfac_api'; if (!empty($_REQUEST['tab'])) { $tab = 'xfac_' . $_GET['tab']; } $sectionFound = false; foreach ($sections as $section) { if ($section['id'] === $tab) { $sectionFound = true; } } if (!$sectionFound) { $firstSection = reset($sections); $tab = $firstSection['id']; } // prepare section's data switch ($tab) { case 'xfac_api': $xfGuestRecords = xfac_user_getRecordsByUserId(0); $xfAdminRecords = $currentWpUserRecords; $configuredAdminRecord = null; $xfAdminAccountOption = intval(get_option('xfac_xf_admin_account')); if ($xfAdminAccountOption > 0) { $configuredAdminRecord = xfac_user_getRecordById($xfAdminAccountOption); if (!empty($configuredAdminRecord)) { $found = false; foreach ($xfAdminRecords as $xfAdminRecord) { if ($xfAdminRecord->id == $configuredAdminRecord->id) { $found = true; } } if (!$found) { $xfAdminRecords[] = $configuredAdminRecord; } } } break; case 'xfac_post_comment': $hourlyNext = wp_next_scheduled('xfac_cron_hourly'); $tagForumMappings = get_option('xfac_tag_forum_mappings'); if (!is_array($tagForumMappings)) { $tagForumMappings = array(); } $tags = get_terms('post_tag', array('hide_empty' => false)); break; case 'xfac_user_role': $syncRoleOption = get_option('xfac_sync_role'); if (!is_array($syncRoleOption)) { $syncRoleOption = array(); } break; case 'xfac_ui': $optionTopBarForums = get_option('xfac_top_bar_forums'); if (!is_array($optionTopBarForums)) { $optionTopBarForums = array(); } break; } require xfac_template_locateTemplate('dashboard_options.php'); }
function xfac_user_getAdminAccessToken($config) { $accessToken = null; $xfAdminAccountOption = intval(get_option('xfac_xf_admin_account')); if ($xfAdminAccountOption > 0) { $record = xfac_user_getRecordById($xfAdminAccountOption); if (!empty($record)) { $accessToken = xfac_user_getAccessTokenForRecord($record); } if (empty($accessToken)) { xfac_updateNotice('xf_admin_account', sprintf(__('XenForo Admin Account connection is interrupted. <a href="%s">Please update bridge options</a>.', 'xenforo-api-consumer'), admin_url('options-general.php?page=xfac')), 'manage_options', __('XenForo Admin Account connection is interrupted. Please notify the staff.', 'xenforo-api-consumer')); } } return $accessToken; }