Esempio n. 1
0
function upgrade15_usernameupdate()
{
    global $db, $output, $mybb;
    $output->print_header("Performing Queries");
    echo "<p>Performing username updates..</p>";
    flush();
    require_once MYBB_ROOT . "inc/datahandler.php";
    require_once MYBB_ROOT . "inc/datahandlers/user.php";
    $not_renameable = array();
    // Because commas can cause some problems with private message sending in usernames we have to remove them
    $query = $db->simple_select("users", "uid, username", "username LIKE '%,%'");
    while ($user = $db->fetch_array($query)) {
        $userhandler = new UserDataHandler('update');
        $updated_user = array("uid" => $user['uid'], "username" => str_replace(',', '', $user['username']));
        $userhandler->set_data($updated_user);
        if (!$userhandler->validate_user()) {
            $not_renameable[] = htmlspecialchars_uni($user['username']);
        } else {
            $userhandler->update_user();
        }
    }
    if (!empty($not_renameable)) {
        echo "<span style=\"color: red;\">NOTICE:</span> The following users could not be renamed automatically. Please rename these users in the Admin CP manually after the upgrade process has finished completing:<br />\n\t\t<ul>\n\t\t<li>";
        echo implode('</li>\\n<li>', $not_renameable);
        echo "</li>\n\t\t</ul>";
    }
    $contents .= "Click next to continue with the upgrade process.</p>";
    $output->print_contents($contents);
    $output->print_footer("15_done");
}
Esempio n. 2
0
/**
 * MyBB 1.8
 * Copyright 2014 MyBB Group, All Rights Reserved
 *
 * Website: http://www.mybb.com
 * License: http://www.mybb.com/about/license
 *
 */
function task_userpruning($task)
{
    global $db, $lang, $mybb, $cache, $plugins;
    if ($mybb->settings['enablepruning'] != 1) {
        return;
    }
    // Are we pruning by posts?
    if ($mybb->settings['enableprunebyposts'] == 1) {
        $in_usergroups = array();
        $users = array();
        $usergroups = $cache->read('usergroups');
        foreach ($usergroups as $gid => $usergroup) {
            // Exclude admin, moderators, super moderators, banned
            if ($usergroup['canmodcp'] == 1 || $usergroup['cancp'] == 1 || $usergroup['issupermod'] == 1 || $usergroup['isbannedgroup'] == 1) {
                continue;
            }
            $in_usergroups[] = $gid;
        }
        // If we're not pruning unactivated users, then remove them from the criteria
        if ($mybb->settings['pruneunactived'] == 0) {
            $key = array_search('5', $in_usergroups);
            unset($in_usergroups[$key]);
        }
        $prunepostcount = (int) $mybb->settings['prunepostcount'];
        $regdate = TIME_NOW - (int) $mybb->settings['dayspruneregistered'] * 24 * 60 * 60;
        $usergroups = $db->escape_string(implode(',', $in_usergroups));
        $query = $db->simple_select('users', 'uid', "regdate<={$regdate} AND postnum<={$prunepostcount} AND usergroup IN({$usergroups})");
        while ($uid = $db->fetch_field($query, 'uid')) {
            $users[$uid] = $uid;
        }
        if ($users && $mybb->settings['prunepostcountall']) {
            $query = $db->simple_select('posts', 'uid, COUNT(pid) as posts', "uid IN ('" . implode("','", $users) . "') AND visible>0", array('group_by' => 'uid'));
            while ($user = $db->fetch_array($query)) {
                if ($user['posts'] >= $prunepostcount) {
                    unset($users[$user['uid']]);
                }
            }
        }
    }
    // Are we pruning unactivated users?
    if ($mybb->settings['pruneunactived'] == 1) {
        $regdate = TIME_NOW - (int) $mybb->settings['dayspruneunactivated'] * 24 * 60 * 60;
        $query = $db->simple_select("users", "uid", "regdate<={$regdate} AND usergroup='5'");
        while ($user = $db->fetch_array($query)) {
            $users[$user['uid']] = $user['uid'];
        }
    }
    if (is_object($plugins)) {
        $args = array('task' => &$task, 'in_usergroups' => &$in_usergroups, 'users' => &$users);
        $plugins->run_hooks('task_userpruning', $args);
    }
    if (!empty($users)) {
        // Set up user handler.
        require_once MYBB_ROOT . 'inc/datahandlers/user.php';
        $userhandler = new UserDataHandler('delete');
        // Delete the prunned users
        $userhandler->delete_user($users, $mybb->settings['prunethreads']);
    }
    add_task_log($task, $lang->task_userpruning_ran);
}
Esempio n. 3
0
 /**
  * 
  * @param  string $dsn - a valid data source name 
  * @return UserDataHandler instance
  */
 public static function instance($dsn = NULL)
 {
     if (self::$instance == NULL || self::$tester_dsn != $dsn) {
         self::$instance = new UserDataHandler($dsn);
     }
     return self::$instance;
 }
Esempio n. 4
0
function upgrade15_usernameupdate()
{
    global $db, $output, $mybb, $plugins;
    $output->print_header("Performing Queries");
    echo "<p>Performing username updates..</p>";
    flush();
    require_once MYBB_ROOT . "inc/datahandler.php";
    require_once MYBB_ROOT . "inc/datahandlers/user.php";
    // Load plugin system for datahandler
    require_once MYBB_ROOT . "inc/class_plugins.php";
    $plugins = new pluginSystem();
    $not_renameable = array();
    // Because commas can cause some problems with private message sending in usernames we have to remove them
    $query = $db->simple_select("users", "uid, username", "username LIKE '%,%'");
    while ($user = $db->fetch_array($query)) {
        $prefix = '';
        $userhandler = new UserDataHandler('update');
        do {
            $username = str_replace(',', '', $user['username']) . '_' . $prefix;
            $updated_user = array("uid" => $user['uid'], "username" => $username);
            $userhandler->set_data($updated_user);
            ++$prefix;
        } while (!$userhandler->verify_username() || $userhandler->verify_username_exists());
        if (!$userhandler->validate_user()) {
            $not_renameable[] = htmlspecialchars_uni($user['username']);
        } else {
            $db->update_query("users", array('username' => $db->escape_string($username)), "uid='{$user['uid']}'");
            $db->update_query("posts", array('username' => $db->escape_string($username)), "uid='{$user['uid']}'");
            $db->update_query("threads", array('username' => $db->escape_string($username)), "uid='{$user['uid']}'");
            $db->update_query("threads", array('lastposter' => $db->escape_string($username)), "lastposteruid='{$user['uid']}'");
            $db->update_query("forums", array('lastposter' => $db->escape_string($username)), "lastposteruid='{$user['uid']}'");
            update_stats(array("numusers" => "+0"));
        }
    }
    if (!empty($not_renameable)) {
        echo "<span style=\"color: red;\">NOTICE:</span> The following users could not be renamed automatically. Please rename these users in the Admin CP manually after the upgrade process has finished completing:<br />\n\t\t<ul>\n\t\t<li>";
        echo implode('</li>\\n<li>', $not_renameable);
        echo "</li>\n\t\t</ul>";
    }
    $contents .= "Click next to continue with the upgrade process.</p>";
    $output->print_contents($contents);
    $output->print_footer("15_done");
}
Esempio n. 5
0
function upgrade15_usernameupdate()
{
    global $db, $output, $mybb, $plugins;
    $output->print_header("Wykonywanie zapytań");
    echo "<p>Trwa wykonywanie wymaganych zapytań do bazy danych...</p>";
    flush();
    require_once MYBB_ROOT . "inc/datahandler.php";
    require_once MYBB_ROOT . "inc/datahandlers/user.php";
    // Load plugin system for datahandler
    require_once MYBB_ROOT . "inc/class_plugins.php";
    $plugins = new pluginSystem();
    $not_renameable = array();
    // Because commas can cause some problems with private message sending in usernames we have to remove them
    $query = $db->simple_select("users", "uid, username", "username LIKE '%,%'");
    while ($user = $db->fetch_array($query)) {
        $prefix = '';
        $userhandler = new UserDataHandler('update');
        do {
            $username = str_replace(',', '', $user['username']) . '_' . $prefix;
            $updated_user = array("uid" => $user['uid'], "username" => $username);
            $userhandler->set_data($updated_user);
            ++$prefix;
        } while (!$userhandler->verify_username() || $userhandler->verify_username_exists());
        if (!$userhandler->validate_user()) {
            $not_renameable[] = htmlspecialchars_uni($user['username']);
        } else {
            $db->update_query("users", array('username' => $db->escape_string($username)), "uid='{$user['uid']}'");
            $db->update_query("posts", array('username' => $db->escape_string($username)), "uid='{$user['uid']}'");
            $db->update_query("threads", array('username' => $db->escape_string($username)), "uid='{$user['uid']}'");
            $db->update_query("threads", array('lastposter' => $db->escape_string($username)), "lastposteruid='{$user['uid']}'");
            $db->update_query("forums", array('lastposter' => $db->escape_string($username)), "lastposteruid='{$user['uid']}'");
            update_stats(array("numusers" => "+0"));
        }
    }
    if (!empty($not_renameable)) {
        echo "<span style=\"color: red;\">OSTRZEŻENIE:</span> Poniższe loginy nie mogły zostać zmienione automatycznie. Zmień je ręcznie po zakończeniu procesu aktualizacji.<br />\n\t\t<ul>\n\t\t<li>";
        echo implode('</li>\\n<li>', $not_renameable);
        echo "</li>\n\t\t</ul>";
    }
    $contents .= "Naciśnij przycisk Dalej, aby kontynuować proces aktualizacji.</p>";
    $output->print_contents($contents);
    $output->print_footer("15_done");
}
Esempio n. 6
0
     admin_redirect("index.php?module=user-users");
 }
 // Determine the usergroup stuff
 if (is_array($mybb->input['additionalgroups'])) {
     foreach ($mybb->input['additionalgroups'] as $key => $gid) {
         if ($gid == $mybb->input['usergroup']) {
             unset($mybb->input['additionalgroups'][$key]);
         }
     }
     $additionalgroups = implode(",", $mybb->input['additionalgroups']);
 } else {
     $additionalgroups = '';
 }
 // Set up user handler.
 require_once MYBB_ROOT . "inc/datahandlers/user.php";
 $userhandler = new UserDataHandler('update');
 // Set the data for the new user.
 $updated_user = array("uid" => $mybb->input['uid'], "username" => $mybb->input['username'], "email" => $mybb->input['email'], "email2" => $mybb->input['email'], "usergroup" => $mybb->input['usergroup'], "additionalgroups" => $additionalgroups, "displaygroup" => $mybb->input['displaygroup'], "postnum" => $mybb->input['postnum'], "usertitle" => $mybb->input['usertitle'], "timezone" => $mybb->input['timezone'], "language" => $mybb->input['language'], "profile_fields" => $mybb->input['profile_fields'], "profile_fields_editable" => true, "website" => $mybb->input['website'], "icq" => $mybb->input['icq'], "aim" => $mybb->input['aim'], "yahoo" => $mybb->input['yahoo'], "msn" => $mybb->input['msn'], "birthday" => array("day" => $mybb->input['bday1'], "month" => $mybb->input['bday2'], "year" => $mybb->input['bday3']), "style" => $mybb->input['style'], "signature" => $mybb->input['signature'], "dateformat" => intval($mybb->input['dateformat']), "timeformat" => intval($mybb->input['timeformat']), "language" => $mybb->input['language'], "usernotes" => $mybb->input['usernotes']);
 if ($user['usergroup'] == 5 && $mybb->input['usergroup'] != 5) {
     if ($user['coppauser'] == 1) {
         $updated_user['coppa_user'] = 0;
     }
 }
 if ($mybb->input['new_password']) {
     $updated_user['password'] = $mybb->input['new_password'];
     $updated_user['password2'] = $mybb->input['confirm_new_password'];
 }
 $updated_user['options'] = array("allownotices" => $mybb->input['allownotices'], "hideemail" => $mybb->input['hideemail'], "subscriptionmethod" => $mybb->input['subscriptionmethod'], "invisible" => $mybb->input['invisible'], "dstcorrection" => $mybb->input['dstcorrection'], "threadmode" => $mybb->input['threadmode'], "showsigs" => $mybb->input['showsigs'], "showavatars" => $mybb->input['showavatars'], "showquickreply" => $mybb->input['showquickreply'], "receivepms" => $mybb->input['receivepms'], "receivefrombuddy" => $mybb->input['receivefrombuddy'], "pmnotice" => $mybb->input['pmnotice'], "daysprune" => $mybb->input['daysprune'], "showcodebuttons" => intval($mybb->input['showcodebuttons']), "pmnotify" => $mybb->input['pmnotify'], "showredirect" => $mybb->input['showredirect']);
 if ($mybb->settings['usertppoptions']) {
     $updated_user['options']['tpp'] = intval($mybb->input['tpp']);
 }
Esempio n. 7
0
     $form_container->output_row($lang->ban_time, "", $form->generate_select_box('bantime', $length_list, $mybb->input['bantime'], array('id' => 'bantime')), 'bantime');
     $form_container->end();
     $buttons[] = $form->generate_submit_button($lang->ban_users);
     $form->output_submit_wrapper($buttons);
     $form->end();
     $page->output_footer();
     break;
 case 'multidelete':
     if ($mybb->input['no']) {
         admin_redirect("index.php?module=user-users" . $vid_url);
         // User clicked on 'No
     } else {
         if ($mybb->input['processed'] == 1) {
             // Set up user handler.
             require_once MYBB_ROOT . 'inc/datahandlers/user.php';
             $userhandler = new UserDataHandler('delete');
             // Delete users
             $deleted = $userhandler->delete_user($selected);
             $to_be_deleted = $deleted['deleted_users'];
             // Get the correct number of deleted users
             // Update forum stats, remove the cookie and redirect the user
             my_unsetcookie("inlinemod_useracp");
             $mybb->input['action'] = "inline_delete";
             log_admin_action($to_be_deleted);
             $lang->users_deleted = $lang->sprintf($lang->users_deleted, $to_be_deleted);
             $cache->update_awaitingactivation();
             flash_message($lang->users_deleted, 'success');
             admin_redirect("index.php?module=user-users" . $vid_url);
         }
         $to_be_deleted = count($selected);
         $lang->confirm_multidelete = $lang->sprintf($lang->confirm_multidelete, my_number_format($to_be_deleted));
Esempio n. 8
0
 /**
  * Verifies the author of a post and fetches the username if necessary.
  *
  * @return boolean True if the author information is valid, false if invalid.
  */
 function verify_author()
 {
     global $mybb;
     $post =& $this->data;
     // Don't have a user ID at all - not good (note, a user id of 0 will still work).
     if (!isset($post['uid'])) {
         $this->set_error("invalid_user_id");
         return false;
     } else {
         if ($post['uid'] > 0 && empty($post['username'])) {
             $user = get_user($post['uid']);
             $post['username'] = $user['username'];
         } else {
             if ($post['uid'] == 0 && $post['username'] != $lang->guest) {
                 // Set up user handler
                 require_once MYBB_ROOT . "inc/datahandlers/user.php";
                 $userhandler = new UserDataHandler();
                 $data_array = array('username' => $post['username']);
                 $userhandler->set_data($data_array);
                 if (!$userhandler->verify_username()) {
                     // invalid username
                     $this->errors = array_merge($this->errors, $userhandler->get_errors());
                     return false;
                 }
                 if ($userhandler->verify_username_exists()) {
                     // username is in use
                     $this->errors = array_merge($this->errors, $userhandler->get_errors());
                     return false;
                 }
             }
         }
     }
     // After all of this, if we still don't have a username, force the username as "Guest" (Note, this is not translatable as it is always a fallback)
     if (!$post['username']) {
         $post['username'] = "******";
     }
     return true;
 }
Esempio n. 9
0
$lang->load('global');
$lang->load('messages');
// Run global_start plugin hook now that the basics are set up
$plugins->run_hooks('global_start');
if (function_exists('mb_internal_encoding') && !empty($lang->settings['charset'])) {
    @mb_internal_encoding($lang->settings['charset']);
}
// Select the board theme to use.
$loadstyle = '';
$load_from_forum = $load_from_user = 0;
$style = array();
// The user used our new quick theme changer
if (isset($mybb->input['theme']) && verify_post_check($mybb->get_input('my_post_key'), true)) {
    // Set up user handler.
    require_once MYBB_ROOT . 'inc/datahandlers/user.php';
    $userhandler = new UserDataHandler('update');
    $user = array('uid' => $mybb->user['uid'], 'style' => $mybb->get_input('theme', MyBB::INPUT_INT), 'usergroup' => $mybb->user['usergroup'], 'additionalgroups' => $mybb->user['additionalgroups']);
    $userhandler->set_data($user);
    // validate_user verifies the style if it is set in the data array.
    if ($userhandler->validate_user()) {
        $mybb->user['style'] = $user['style'];
        // If user is logged in, update their theme selection with the new one
        if ($mybb->user['uid']) {
            if (isset($mybb->cookies['mybbtheme'])) {
                my_unsetcookie('mybbtheme');
            }
            $userhandler->update_user();
        } else {
            my_setcookie('mybbtheme', $user['style']);
        }
    }
Esempio n. 10
0
 /**
  * Updates userdata
  *
  * @param array $userdata Data of the User (uid is required as index)
  * @param boolean Return errors as MyBB array or nicely formated?
  * @return boolean|array
  */
 function updateUser($userdata = array(), $inline_error = true)
 {
     // Userdata Array needs to contain the UserID
     if (!isset($userdata['uid'])) {
         $this->_errorAndDie('A UserID (Array-Key: <i>uid</i>) is required to update a user');
     }
     require_once MYBB_ROOT . 'inc/functions_user.php';
     require_once MYBB_ROOT . 'inc/datahandlers/user.php';
     $userhandler = new UserDataHandler('update');
     $userhandler->set_data($userdata);
     if (!$userhandler->validate_user()) {
         $errors = $userhandler->get_friendly_errors();
         return $inline_error === true ? inline_error($errors) : $errors;
     }
     $userhandler->update_user();
     return true;
 }
 /**
  * Registers an user with Facebook data
  */
 public function register($user)
 {
     if (!$user) {
         return false;
     }
     global $mybb, $session, $plugins, $lang;
     require_once MYBB_ROOT . "inc/datahandlers/user.php";
     $userhandler = new UserDataHandler("insert");
     $plength = 8;
     if ($mybb->settings['minpasswordlength']) {
         $plength = (int) $mybb->settings['minpasswordlength'];
     }
     $password = random_str($plength);
     $new_user = array("username" => $user['name'], "password" => $password, "password2" => $password, "email" => $user['email'], "email2" => $user['email'], "usergroup" => (int) $mybb->settings['myfbconnect_usergroup'], "regip" => $session->ipaddress, "longregip" => my_ip2long($session->ipaddress), "options" => array("hideemail" => 1));
     /* Registration might fail for custom profile fields required at registration... workaround = IN_ADMINCP defined.
     		Placed straight before the registration process to avoid conflicts with third party plugins messying around with
     		templates (I'm looking at you, PHPTPL) */
     define("IN_ADMINCP", 1);
     $userhandler->set_data($new_user);
     if ($userhandler->validate_user()) {
         $user_info = $userhandler->insert_user();
         $plugins->run_hooks("member_do_register_end");
         // Deliver a welcome PM
         if ($mybb->settings['myfbconnect_passwordpm']) {
             require_once MYBB_ROOT . "inc/datahandlers/pm.php";
             $pmhandler = new PMDataHandler();
             $pmhandler->admin_override = true;
             // Make sure admins haven't done something bad
             $fromid = (int) $mybb->settings['myfbconnect_passwordpm_fromid'];
             if (!$mybb->settings['myfbconnect_passwordpm_fromid'] or !user_exists($mybb->settings['myfbconnect_passwordpm_fromid'])) {
                 $fromid = 0;
             }
             $message = $mybb->settings['myfbconnect_passwordpm_message'];
             $subject = $mybb->settings['myfbconnect_passwordpm_subject'];
             $thingsToReplace = array("{user}" => $user_info['username'], "{password}" => $password);
             // Replace what needs to be replaced
             foreach ($thingsToReplace as $find => $replace) {
                 $message = str_replace($find, $replace, $message);
             }
             $pm = array("subject" => $subject, "message" => $message, "fromid" => $fromid, "toid" => array($user_info['uid']));
             // Some defaults :)
             $pm['options'] = array("signature" => 1);
             $pmhandler->set_data($pm);
             // Now let the PM handler do all the hard work
             if ($pmhandler->validate_pm()) {
                 $pmhandler->insert_pm();
             } else {
                 error($lang->sprintf($lang->myfbconnect_error_report, $pmhandler->get_friendly_errors()));
             }
         }
         // Post a message on the user's wall
         if ($mybb->settings['myfbconnect_postonwall']) {
             $this->post_on_wall($mybb->settings['myfbconnect_postonwall_message']);
         }
         // Finally return our new user data
         return $user_info;
     } else {
         return array('error' => $userhandler->get_friendly_errors());
     }
     return true;
 }
Esempio n. 12
0
 */
require_once ROOT_DIR . '/include/module_init.inc.php';
//$self = whoami();
$self = 'list_chatrooms';
// x template
require_once 'include/comunica_functions.inc.php';
require_once 'include/ChatRoom.inc.php';
require_once 'include/ChatDataHandler.inc.php';
$status = translateFN('lista delle chatrooms');
// display message that explains the functionality of the current script
$help = translateFN("Da qui l'utente puo' creare una nuova chatroom inserendo i valori negli appositi campi.\n\t <br><br>Attenzione!<br>Per il corretto funzionamento della chat e' importante inserire i valori corretti.");
$star = translateFN("I campi contrassegnati con * sono obbligatori, non possono essere lasciati vuoti!");
$status = translateFN("Creazione di una chatroom");
// initialize a new UserDataHandler object
//$udh = new UserDataHandler();
$udh = UserDataHandler::instance($_SESSION['sess_selected_tester_dsn']);
// initialize a new form object
$f = new Tform();
// different chat type options are available for admins and for tutors
if ($id_profile == AMA_TYPE_SWITCHER or $id_profile == AMA_TYPE_TUTOR) {
    $options_of_chat_types = array('Classe' => 'Classe', 'Pubblica' => 'Pubblica');
}
/*
*
if($id_profile == AMA_TYPE_TUTOR){
 $options_of_chat_types = array('Privata' => 'Privata',
	'Classe' => 'Classe',
	'Pubblica'=>'Pubblica');
//  $options_of_chat_types = array('Privata' => 'Privata');
}
*
Esempio n. 13
0
 $groups = explode(",", $mybb->settings['purgespammergroups']);
 if (!in_array($mybb->user['usergroup'], $groups)) {
     error_no_permission();
 }
 $uid = $mybb->input['uid'];
 $user = get_user($uid);
 if (!$user['uid'] || !purgespammer_show($user['postnum'], $user['usergroup'], $user['uid'])) {
     error($lang->purgespammer_invalid_user);
 }
 if ($mybb->input['action'] == "do_purgespammer") {
     verify_post_check($mybb->get_input('my_post_key'));
     $user_deleted = false;
     // Run the hooks first to avoid any issues when we delete the user
     $plugins->run_hooks("moderation_purgespammer_purge");
     require_once MYBB_ROOT . 'inc/datahandlers/user.php';
     $userhandler = new UserDataHandler('delete');
     if ($mybb->settings['purgespammerbandelete'] == "ban") {
         // First delete everything
         $userhandler->delete_content($uid);
         $userhandler->delete_posts($uid);
         // Next ban him (or update the banned reason, shouldn't happen)
         $query = $db->simple_select("banned", "uid", "uid = '{$uid}'");
         if ($db->num_rows($query) > 0) {
             $banupdate = array("reason" => $db->escape_string($mybb->settings['purgespammerbanreason']));
             $db->update_query('banned', $banupdate, "uid = '{$uid}'");
         } else {
             $insert = array("uid" => $uid, "gid" => (int) $mybb->settings['purgespammerbangroup'], "oldgroup" => 2, "oldadditionalgroups" => "", "olddisplaygroup" => 0, "admin" => (int) $mybb->user['uid'], "dateline" => TIME_NOW, "bantime" => "---", "lifted" => 0, "reason" => $db->escape_string($mybb->settings['purgespammerbanreason']));
             $db->insert_query('banned', $insert);
         }
         // Add the IP's to the banfilters
         /*
Esempio n. 14
0
function sign_in_func()
{
    global $db, $lang, $theme, $plugins, $mybb, $session, $settings, $cache, $time, $mybbgroups, $mobiquo_config, $user, $register;
    // Load global language phrases
    $lang->load("member");
    $parser = new postParser();
    $token = trim($_POST['token']);
    $code = trim($_POST['code']);
    $username = $mybb->input['username'];
    $password = $mybb->input['password'];
    $post_email = $mybb->input['email'];
    $status = '';
    if (!empty($token) && !empty($code)) {
        $result = tt_register_verify($token, $code);
        if ($result->result && !empty($result->email)) {
            $email = $result->email;
            if (!empty($post_email) && $post_email != $email) {
                $status = 3;
            } else {
                if ($user = tt_get_user_by_email($email)) {
                    if (!empty($username) && strtolower($username) != strtolower($user['username'])) {
                        $status = 3;
                    } else {
                        $register = 0;
                        return tt_login_success();
                    }
                } else {
                    if (!empty($username) && !empty($email)) {
                        $profile = $result->profile;
                        if ($mybb->settings['disableregs'] == 1) {
                            error($lang->registrations_disabled);
                        }
                        // Set up user handler.
                        require_once MYBB_ROOT . "inc/datahandlers/user.php";
                        $userhandler = new UserDataHandler("insert");
                        $birthday_arr = explode('-', $profile->birthday);
                        $bday = array("day" => $birthday_arr[2], "month" => $birthday_arr[1], "year" => $birthday_arr[0]);
                        $user_field = array('fid3' => ucfirst($profile->gender), 'fid1' => $profile->location, 'fid2' => $profile->description);
                        if ($mybb->settings['regtype'] == "admin") {
                            $usergroup = 5;
                        } else {
                            $usergroup = isset($mybb->settings['tapatalk_register_group']) ? $mybb->settings['tapatalk_register_group'] : 2;
                        }
                        // Set the data for the new user.
                        $user = array("username" => $mybb->input['username'], "password" => $mybb->input['password'], "password2" => $mybb->input['password'], "email" => $email, "email2" => $email, "usergroup" => $usergroup, "referrer" => '', "timezone" => $mybb->settings['timezoneoffset'], "language" => '', "regip" => $session->ipaddress, "longregip" => my_ip2long($session->ipaddress), "coppa_user" => 0, "birthday" => $bday, "website" => $profile->link, "user_fields" => $user_field, "signature" => $profile->signature, "option" => array(), "regdate" => TIME_NOW, "lastvisit" => TIME_NOW);
                        if (!empty($profile->avatar_url)) {
                            $updated_avatar = tt_update_avatar_url($profile->avatar_url);
                        }
                        $userhandler->set_data($user);
                        $userhandler->verify_birthday();
                        $userhandler->verify_options();
                        if ($userhandler->verify_username_exists()) {
                            $status = 1;
                        } else {
                            if (!$userhandler->verify_password() || !$userhandler->verify_username()) {
                                $errors = $userhandler->get_friendly_errors();
                                error($errors[0]);
                            } else {
                                $userhandler->set_validated(true);
                                $user = $userhandler->insert_user();
                                if (!empty($updated_avatar)) {
                                    $db->update_query("users", $updated_avatar, "uid='" . $user['uid'] . "'");
                                }
                                $register = 1;
                                return tt_login_success();
                            }
                        }
                    } else {
                        $status = 2;
                    }
                }
            }
        } else {
            if (!$result->result) {
                if (!empty($result->result_text)) {
                    error($result->result_text);
                } else {
                    error("Tapatalk ID verify faile!");
                }
            }
        }
        if (!empty($status)) {
            $response = new xmlrpcval(array('result' => new xmlrpcval(0, 'boolean'), 'result_text' => new xmlrpcval('', 'base64'), 'status' => new xmlrpcval($status, 'string')), 'struct');
            return new xmlrpcresp($response);
        }
    } else {
        error("Invlaid params!");
    }
}
/**
 *
 * Redirect Output - steam_output_to_misc
 * - - - - - - - - - - - - - - -
 * @desc This function is holds the actions issued by the Steam Login plugin.
 * @since 1.0
 * @version 1.6
 *
 */
function steam_output_to_misc()
{
    global $mybb, $db, $session;
    // The standard action to redirect the user to Steam community.
    if ($mybb->input['action'] == 'steam_login') {
        steam_redirect();
    }
    // close if($mybb->input['action'] == 'steam_login')
    if ($mybb->input['action'] == 'steam_return') {
        $get_key = $db->fetch_array($db->simple_select("settings", "name, value", "name = 'steamlogin_api_key'"));
        $check_update_username = $db->fetch_array($db->simple_select("settings", "name, value", "name = 'steamlogin_update_username'"));
        $check_update_avatar = $db->fetch_array($db->simple_select("settings", "name, value", "name = 'steamlogin_update_avatar'"));
        $check_avatar_size = $db->fetch_array($db->simple_select("settings", "name, value", "name = 'steamlogin_avatar_size'"));
        $check_required_field = $db->fetch_array($db->simple_select("settings", "name, value", "name = 'steamlogin_required_field'"));
        if ($get_key['value'] == null) {
            die("<strong>Not Configured</strong> The Steam Login plugin hasn't been configured correctly. Please ensure an API key is set in the Configuration settings.");
        } else {
            require_once MYBB_ROOT . 'inc/class_steam.php';
            require_once MYBB_ROOT . 'inc/class_lightopenid.php';
            require_once MYBB_ROOT . 'inc/functions.php';
            require_once MYBB_ROOT . 'inc/class_session.php';
            $steam = new steam();
            $steam_open_id = new LightOpenID();
            $steam_open_id->validate();
            $return_explode = explode('/', $steam_open_id->identity);
            $steamid = end($return_explode);
            $steam_info = $steam->get_user_info($steamid);
            // Check the status.
            if ($steam_info['status'] == 'success') {
                $steamid = $steam_info['steamid'];
                $personaname = $steam_info['personaname'];
                $profileurl = $steam_info['profileurl'];
                $avatar = $steam_info['avatars']['medium'];
                // Check the avatar size set in the database.
                if ($check_avatar_size['value'] == '0') {
                    $avatar = $steam_info['avatars']['small'];
                }
                if ($check_avatar_size['value'] == '2') {
                    $avatar = $steam_info['avatars']['large'];
                }
                $personaname = strip_tags($personaname);
                //This is so people can not use tags that display.
                $personaname = $db->escape_string($personaname);
                // Perform a check to see if the user already exists in the database.
                $user_check = $db->num_rows($db->simple_select("users", "*", "loginname = '{$steamid}'"));
                if ($user_check == 0) {
                    $password = random_str(8);
                    $email = $steamid . '@steamcommunity.com';
                    $default_usergroup = 2;
                    // On a standard MyBB installation this is the group: Registered
                    require_once MYBB_ROOT . "inc/datahandlers/user.php";
                    $userhandler = new UserDataHandler("insert");
                    $new_user_data = array("username" => $personaname, "password" => $password, "password2" => $password, "email" => $email, "email2" => $email, "avatar" => $avatar, "usergroup" => $default_usergroup, "displaygroup" => $default_usergroup, "website" => $profileurl, "regip" => $session->ipaddress, "longregip" => my_ip2long($session->ipaddress), "loginname" => $steamid);
                    if ($check_required_field['value'] != "" and is_numeric($check_required_field['value'])) {
                        // Check the field exists.
                        $field_exists = $db->num_rows($db->simple_select("profilefields", "*", "fid = '" . $check_required_field['value'] . "'"));
                        if ($field_exists > 0) {
                            $new_user_data['profile_fields']['fid' . $check_required_field['value']] = $steamid;
                        }
                    }
                    $userhandler->set_data($new_user_data);
                    if ($userhandler->validate_user()) {
                        $user_info = $userhandler->insert_user();
                    }
                    // close if ($userhandler->validate_user())
                } else {
                    // close if($user_check == 0)
                    $update = array();
                    // Init our update array.
                    // Do our checks for both username and avatar.
                    if ($check_update_username['value'] == 1) {
                        $update['username'] = $personaname;
                    }
                    if ($check_update_avatar['value'] == 1) {
                        $update['avatar'] = $avatar;
                    }
                    // Run our update query if the array isn't empty.
                    if (!empty($update)) {
                        $db->update_query('users', $update, "loginname = '{$steamid}'");
                    }
                }
                // close else
                $user = $db->fetch_array($db->simple_select("users", "*", "loginname = '{$steamid}'"));
                // Login the user.
                my_setcookie("mybbuser", $user['uid'] . "_" . $user['loginkey'], true, true);
                my_setcookie("sid", $session->sid, -1, true);
                redirect("index.php", 'Your account has been authenticated and you have been logged in.<br/> Powered By <a href="http://www.steampowered.com" target="_blank">Steam</a>', 'Login via Steam');
            }
            // close if($steam_info['status'] == 'success')
        }
        // close else
    }
    // close if($mybb->input['action'] == 'steam_login')
}
Esempio n. 16
0
 /**
  * get all data for a given message (only called while reading a message)
  *
  * @access public
  *
  * @param   $user_id - id of the user of the spool
  * @param   $msg_id  - id of the message
  *
  * @return  an hash with keys:
  *           id_messaggio,
  *           data_ora,
  *           tipo,
  *           titolo,
  *           mittente*,
  *           destinatari**,
  *           priorita,
  *           testo
  *
  *           *mittente is a username
  *           **destinatari is a CVS list of usernames
  *
  **/
 public function get_message($user_id, $msg_id)
 {
     // logger("entered MessageHandler::get_message - ".
     //       "[user_id = $user_id, msg_id=$msg_id]", 3);
     // create generic instance
     $spool = new Spool($user_id, $this->dsn);
     // get message content and recipients' ids list
     $res_ar = $spool->get_message_info($msg_id);
     //vito, 2 feb 2009: qui potrebbe non aver trovato il messaggio
     if (AMA_DataHandler::isError($res_ar)) {
         return new AMA_Error(AMA_ERR_READ_MSG);
     }
     list($message_ha, $recipients_ids_ar) = $res_ar;
     // create instance of UserDataHandler
     //vito, 26 settembre 2008
     //$udh = new UserDataHandler();
     $udh = UserDataHandler::instance($this->dsn);
     // transform sender id into sender username
     $sender_id = $message_ha['id_mittente'];
     $res_ar = $udh->find_users_list(array("username"), "id_utente={$sender_id}");
     if (AMA_DataHandler::isError($res_ar)) {
         return new AMA_Error(AMA_ERR_READ_MSG);
     }
     $sender_username = $res_ar[0][1];
     // transform recipients' ids array into usernames array
     $recipients_usernames_ar = array();
     foreach ($recipients_ids_ar as $rid) {
         // get username of the current id ($rid)
         $res_ar = $udh->find_users_list(array("username"), "id_utente={$rid}");
         if (AMA_DataHandler::isError($res_ar)) {
             return new AMA_Error(AMA_ERR_READ_MSG);
         }
         if (array_key_exists(0, $res_ar)) {
             $recipients_usernames_ar[] = $res_ar[0][1];
         }
     }
     // create CSV list starting from array
     $recipients_usernames = implode(",", $recipients_usernames_ar);
     // adapt message hash
     $message_ha['mittente'] = $sender_username;
     $message_ha['destinatari'] = $recipients_usernames;
     // set message as read
     $res = $spool->_set_message($msg_id, "read", 'R');
     if (AMA_DataHandler::isError($res)) {
         return new AMA_Error(AMA_ERR_UPDATE);
     }
     // return values
     return $message_ha;
 }