Beispiel #1
0
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);
                    }
                }
            }
        }
    }
}
Beispiel #2
0
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');
}
Beispiel #3
0
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;
}