require_once "./global.php";
$lang->load('myfbconnect');
if (!$mybb->settings['myfbconnect_enabled']) {
    header("Location: index.php");
    exit;
}
// Registrations are disabled
if ($mybb->settings['disableregs'] == 1) {
    if (!$lang->registrations_disabled) {
        $lang->load("member");
    }
    error($lang->registrations_disabled);
}
// Load API
require_once MYBB_ROOT . "inc/plugins/MyFacebookConnect/class_facebook.php";
$FacebookConnect = new MyFacebook();
// If the user is watching another page, fallback to login
if (!in_array($mybb->input['action'], explode(',', ALLOWABLE_PAGE))) {
    $mybb->input['action'] = 'login';
}
// Begin the authenticating process
if ($mybb->input['action'] == 'login') {
    if ($mybb->user['uid']) {
        error($lang->myfbconnect_error_alreadyloggedin);
    }
    $FacebookConnect->authenticate();
}
// Receive the incoming data from Facebook and evaluate the user
if ($mybb->input['action'] == 'do_login') {
    // Already logged in? You should not use this
    if ($mybb->user['uid']) {
Exemple #2
0
    }
    protected function getPersistentData($key, $default = false)
    {
        return array_key_exists($key, $this->_persistent_data) ? $this->_persistent_data[$key] : $default;
    }
    protected function clearPersistentData($key)
    {
        unset($this->_persistent_data[$key]);
    }
    protected function clearAllPersistentData()
    {
        $this->_persistent_data = array();
    }
}
$config = array('appId' => getenv('FB_APPID'), 'secret' => getenv('FB_SECRET'));
$facebook = new MyFacebook($config);
$facebook->setAccessToken(getenv('FB_ACCESSTOKEN'));
$params = array();
$time = strtotime('0:0:0 -30day');
if (!($log = HeadLineLog::find($time))) {
    exit;
}
if ($log->facebook_id) {
    exit;
}
$data = json_decode($log->data);
$message = '';
$message .= '腿新聞為您帶來30天前的四大報頭版:' . date('Y/m/d', $time) . PHP_EOL;
foreach ($data->headlines as $headline) {
    list($paper, $title) = $headline;
    $message .= $paper . ':' . $title . PHP_EOL;
function myfbconnect_usercp()
{
    global $mybb, $lang, $inlinesuccess;
    // Load API in certain areas
    if (in_array($mybb->input['action'], array('fblink', 'do_fblink')) or $_SESSION['fblogin'] or $mybb->input['action'] == 'myfbconnect' and $mybb->request_method == 'post') {
        require_once MYBB_ROOT . "inc/plugins/MyFacebookConnect/class_facebook.php";
        $FacebookConnect = new MyFacebook();
    }
    $settingsToCheck = array('fbavatar', 'fbbday', 'fbsex', 'fbdetails', 'fbbio', 'fblocation');
    if (!$lang->myfbconnect) {
        $lang->load('myfbconnect');
    }
    // Authenticate
    if ($mybb->input['action'] == 'fblink') {
        $FacebookConnect->set_fallback('usercp.php?action=do_fblink');
        $FacebookConnect->authenticate();
    }
    // Link account to his Facebook's one
    if ($mybb->input['action'] == 'do_fblink') {
        if (!$FacebookConnect->check_user()) {
            error($lang->myfbconnect_error_noauth);
        }
        $user = $FacebookConnect->get_user('id,verified');
        if ($user) {
            $FacebookConnect->link_user('', $user['id']);
        }
        $FacebookConnect->redirect('usercp.php?action=myfbconnect', '', $lang->myfbconnect_success_linked);
    }
    // Settings page
    if ($mybb->input['action'] == 'myfbconnect') {
        global $db, $theme, $templates, $headerinclude, $header, $footer, $plugins, $usercpnav;
        add_breadcrumb($lang->nav_usercp, 'usercp.php');
        add_breadcrumb($lang->myfbconnect_page_title, 'usercp.php?action=myfbconnect');
        // The user is changing his settings
        if ($mybb->request_method == 'post' or $_SESSION['fblogin']) {
            if ($mybb->request_method == 'post') {
                verify_post_check($mybb->input['my_post_key']);
            }
            // He's unlinking his account
            if ($mybb->input['unlink']) {
                $FacebookConnect->unlink_user();
                redirect('usercp.php?action=myfbconnect', $lang->myfbconnect_success_accunlinked, $lang->myfbconnect_success_accunlinked_title);
            } else {
                $settings = array();
                foreach ($settingsToCheck as $setting) {
                    $settings[$setting] = 0;
                    if ($mybb->input[$setting] == 1) {
                        $settings[$setting] = 1;
                    }
                    // Build a list of parameters to include in the fallback URL
                    $loginUrlExtra .= "&{$setting}=" . $settings[$setting];
                }
                // This user is not logged in with Facebook
                if (!$FacebookConnect->check_user()) {
                    // Store a token in the session, we will check for it in the next call
                    $_SESSION['fblogin'] = 1;
                    $FacebookConnect->set_fallback("usercp.php?action=myfbconnect" . $loginUrlExtra);
                    $FacebookConnect->authenticate();
                    return;
                }
                if ($db->update_query('users', $settings, 'uid = ' . (int) $mybb->user['uid'])) {
                    unset($_SESSION['fblogin']);
                    $newUser = array_merge($mybb->user, $settings);
                    $FacebookConnect->sync($newUser);
                    redirect('usercp.php?action=myfbconnect', $lang->myfbconnect_success_settingsupdated, $lang->myfbconnect_success_settingsupdated_title);
                }
            }
        }
        $options = '';
        if ($mybb->user['myfb_uid']) {
            $userSettings = array();
            // Checking if admins and users want to sync that stuff
            foreach ($settingsToCheck as $setting) {
                $tempKey = 'myfbconnect_' . $setting;
                if (!$mybb->settings[$tempKey]) {
                    continue;
                }
                $userSettings[$setting] = 0;
                if ($mybb->user[$setting]) {
                    $userSettings[$setting] = 1;
                }
            }
            $text = $lang->myfbconnect_settings_whattosync;
            $unlink = "<input type=\"submit\" class=\"button\" name=\"unlink\" value=\"{$lang->myfbconnect_settings_unlink}\" />";
            if ($userSettings) {
                foreach ($userSettings as $setting => $value) {
                    $tempKey = 'myfbconnect_settings_' . $setting;
                    $checked = '';
                    if ($value) {
                        $checked = " checked=\"checked\"";
                    }
                    $label = $lang->{$tempKey};
                    $altbg = alt_trow();
                    eval("\$options .= \"" . $templates->get('myfbconnect_usercp_settings_setting') . "\";");
                }
            } else {
                $text = $lang->myfbconnect_settings_connected;
            }
        } else {
            $text = $lang->myfbconnect_settings_linkaccount;
            eval("\$options = \"" . $templates->get('myfbconnect_usercp_settings_linkprofile') . "\";");
        }
        eval("\$content = \"" . $templates->get('myfbconnect_usercp_settings') . "\";");
        output_page($content);
    }
}