$errors['avatar'] = qa_lang_sub('main/image_too_big_x_pc', (int) ($toobig * 100));
                    } elseif (!qa_set_user_avatar($userid, file_get_contents($_FILES['file']['tmp_name']), $useraccount['avatarblobid'])) {
                        $errors['avatar'] = qa_lang_sub('main/image_not_read', implode(', ', qa_gd_image_formats()));
                    }
                    break;
            }
        }
        if (count($inprofile)) {
            $filtermodules = qa_load_modules_with('filter', 'filter_profile');
            foreach ($filtermodules as $filtermodule) {
                $filtermodule->filter_profile($inprofile, $errors, $useraccount, $userprofile);
            }
        }
        foreach ($userfields as $userfield) {
            if (!isset($errors[$userfield['fieldid']])) {
                qa_db_user_profile_set($userid, $userfield['title'], $inprofile[$userfield['fieldid']]);
            }
        }
        list($useraccount, $userprofile) = qa_db_select_with_pending(qa_db_user_account_selectspec($userid, true), qa_db_user_profile_selectspec($userid, true));
        qa_report_event('u_save', $userid, $useraccount['handle'], qa_cookie_get());
        if (empty($errors)) {
            qa_redirect('account', array('state' => 'profile-saved'));
        }
        qa_logged_in_user_flush();
    }
}
//	Process change password if clicked
if (qa_clicked('dochangepassword')) {
    require_once QA_INCLUDE_DIR . 'qa-app-users-edit.php';
    $inoldpassword = qa_post_text('oldpassword');
    $innewpassword1 = qa_post_text('newpassword1');
Esempio n. 2
0
 function qa_log_in_external_user($source, $identifier, $fields)
 {
     if (qa_to_override(__FUNCTION__)) {
         $args = func_get_args();
         return qa_call_override(__FUNCTION__, $args);
     }
     require_once QA_INCLUDE_DIR . 'db/users.php';
     $users = qa_db_user_login_find($source, $identifier);
     $countusers = count($users);
     if ($countusers > 1) {
         qa_fatal_error('External login mapped to more than one user');
     }
     // should never happen
     if ($countusers) {
         // user exists so log them in
         qa_set_logged_in_user($users[0]['userid'], $users[0]['handle'], false, $source);
     } else {
         // create and log in user
         require_once QA_INCLUDE_DIR . 'app/users-edit.php';
         qa_db_user_login_sync(true);
         $users = qa_db_user_login_find($source, $identifier);
         // check again after table is locked
         if (count($users) == 1) {
             qa_db_user_login_sync(false);
             qa_set_logged_in_user($users[0]['userid'], $users[0]['handle'], false, $source);
         } else {
             $handle = qa_handle_make_valid(@$fields['handle']);
             if (strlen(@$fields['email'])) {
                 // remove email address if it will cause a duplicate
                 $emailusers = qa_db_user_find_by_email($fields['email']);
                 if (count($emailusers)) {
                     qa_redirect('login', array('e' => $fields['email'], 'ee' => '1'));
                     unset($fields['email']);
                     unset($fields['confirmed']);
                 }
             }
             $userid = qa_create_new_user((string) @$fields['email'], null, $handle, isset($fields['level']) ? $fields['level'] : QA_USER_LEVEL_BASIC, @$fields['confirmed']);
             qa_db_user_login_add($userid, $source, $identifier);
             qa_db_user_login_sync(false);
             $profilefields = array('name', 'location', 'website', 'about');
             foreach ($profilefields as $fieldname) {
                 if (strlen(@$fields[$fieldname])) {
                     qa_db_user_profile_set($userid, $fieldname, $fields[$fieldname]);
                 }
             }
             if (strlen(@$fields['avatar'])) {
                 qa_set_user_avatar($userid, $fields['avatar']);
             }
             qa_set_logged_in_user($userid, $handle, false, $source);
         }
     }
 }
Esempio n. 3
0
function ra_upload_cover($name)
{
    if (isset($_FILES[$name]['name']) && getimagesize($_FILES[$name]['tmp_name']) > 0 && $_FILES[$name]['size'] > 0 && $_FILES[$name]['size'] < 1048576) {
        require_once DUDE_THEME_DIR . '/inc/class.Images.php';
        require_once QA_INCLUDE_DIR . 'qa-db-users.php';
        if (!file_exists(QA_BASE_DIR . 'images/')) {
            mkdir(QA_BASE_DIR . 'images/');
        }
        $uploaddir = QA_BASE_DIR . 'images/';
        $ext = pathinfo($_FILES[$name]['name'], PATHINFO_EXTENSION);
        $file_name = md5(time() . uniqid());
        $temp_name = $file_name . '_temp';
        $temp_name_with_ext = $file_name . '_temp' . $ext;
        $file_name_with_ext = $file_name . '.' . $ext;
        move_uploaded_file($_FILES[$name]['tmp_name'], $uploaddir . $temp_name_with_ext);
        $image = new Image($uploaddir . $temp_name_with_ext);
        $image->resize(621, 300, 'crop', 'c', 't', 99);
        $image->save($file_name, $uploaddir);
        $thumb = new Image($uploaddir . $temp_name_with_ext);
        $thumb->resize(278, 120, 'crop', 'c', 't', 99);
        $thumb->save($file_name . '_s', $uploaddir);
        unlink($uploaddir . $temp_name_with_ext);
        if (defined('QA_WORDPRESS_INTEGRATE_PATH')) {
            $prev_file = get_user_meta(qa_get_logged_in_handle(), 'cover');
        } else {
            $prev_file = ra_user_profile(qa_get_logged_in_handle(), 'cover');
        }
        if (strlen($prev_file)) {
            $delete = $uploaddir . $prev_file;
            $prev_file_name = explode('.', $prev_file);
            if (file_exists($delete)) {
                unlink($delete);
            }
            if (file_exists($uploaddir . $prev_file_name[0] . '_s.' . $prev_file_name[1])) {
                unlink($uploaddir . $prev_file_name[0] . '_s.' . $prev_file_name[1]);
            }
        }
        if (defined('QA_WORDPRESS_INTEGRATE_PATH')) {
            update_user_meta(qa_get_logged_in_userid(), 'cover', $file_name_with_ext);
        } else {
            qa_db_user_profile_set(qa_get_logged_in_userid(), 'cover', $file_name_with_ext);
        }
    } else {
        global $ra_error;
        if ($_FILES[$name]['size'] > 1048576) {
            $ra_error = _ra_lang('Upload failed, image size is bigger then 1MB');
        } else {
            $ra_error = _ra_lang('An error occurred when uploading, please try again.');
        }
    }
}
Esempio n. 4
0
function qw_save_notification_settings($data, $userid)
{
    require_once QA_INCLUDE_DIR . 'qa-db-users.php';
    $key = 'qw_notification_settings';
    qa_db_user_profile_set($userid, $key, $data);
}
                if ($toobig) {
                    $errors['avatar'] = qa_lang_sub('main/image_too_big_x_pc', (int) ($toobig * 100));
                } elseif (!qa_set_user_avatar($qa_login_userid, file_get_contents($_FILES['file']['tmp_name']), $useraccount['avatarblobid'])) {
                    $errors['avatar'] = qa_lang_sub('main/image_not_read', implode(', ', qa_gd_image_formats()));
                }
                break;
        }
    }
    $infield = array();
    foreach ($userfields as $userfield) {
        $fieldname = 'field_' . $userfield['fieldid'];
        $fieldvalue = qa_post_text($fieldname);
        $infield[$fieldname] = $fieldvalue;
        qa_profile_field_validate($fieldname, $fieldvalue, $errors);
        if (!isset($errors[$fieldname])) {
            qa_db_user_profile_set($qa_login_userid, $userfield['title'], $fieldvalue);
        }
    }
    list($useraccount, $userprofile) = qa_db_select_with_pending(qa_db_user_account_selectspec($qa_login_userid, true), qa_db_user_profile_selectspec($qa_login_userid, true));
    qa_report_event('u_save', $qa_login_userid, $useraccount['handle'], $qa_cookieid);
    if (empty($errors)) {
        qa_redirect('account', array('state' => 'profile-saved'));
    }
    qa_logged_in_user_flush();
}
//	Process change password if clicked
if (qa_clicked('dochangepassword')) {
    require_once QA_INCLUDE_DIR . 'qa-app-users-edit.php';
    $inoldpassword = qa_post_text('oldpassword');
    $innewpassword1 = qa_post_text('newpassword1');
    $innewpassword2 = qa_post_text('newpassword2');
Esempio n. 6
0
 function qa_log_in_external_user($source, $identifier, $fields)
 {
     require_once QA_INCLUDE_DIR . 'qa-db-users.php';
     $users = qa_db_user_login_find($source, $identifier);
     $countusers = count($users);
     if ($countusers > 1) {
         qa_fatal_error('External login mapped to more than one user');
     }
     // should never happen
     if ($countusers) {
         // user exists so log them in
         qa_set_logged_in_user($users[0]['userid'], $users[0]['handle'], false, $source);
     } else {
         // create and log in user
         require_once QA_INCLUDE_DIR . 'qa-app-users-edit.php';
         $handle = qa_handle_make_valid(@$fields['handle']);
         $userid = qa_create_new_user((string) @$fields['email'], null, $handle, isset($fields['level']) ? $fields['level'] : QA_USER_LEVEL_BASIC, @$fields['confirmed']);
         qa_db_user_login_add($userid, $source, $identifier);
         $profilefields = array('name', 'location', 'website', 'about');
         foreach ($profilefields as $fieldname) {
             if (strlen(@$fields[$fieldname])) {
                 qa_db_user_profile_set($userid, $fieldname, $fields[$fieldname]);
             }
         }
         if (strlen(@$fields['avatar'])) {
             qa_set_user_avatar($userid, $fields['avatar']);
         }
         qa_set_logged_in_user($userid, $handle, false, $source);
     }
 }
/**
 * Overrides the default mechanism of logging in from external sources.
 *
 * Adds a different way of tracking the sessions and performs some 
 * additional tasks when creating an user account (setting new fields,
 * extra checks, etc).
 */
function qa_log_in_external_user($source, $identifier, $fields)
{
    require_once QA_INCLUDE_DIR . 'qa-db-users.php';
    $remember = qa_opt('open_login_remember') ? true : false;
    $users = qa_db_user_login_find($source, $identifier);
    $countusers = count($users);
    if ($countusers > 1) {
        qa_fatal_error('External login mapped to more than one user');
    }
    // should never happen
    /*
     * To allow for more than one account from the same openid/openauth provider to be 
     * linked to an Q2A user, we need to override the way session source is stored
     * Supposing userid 01 is linked to 2 yahoo accounts, the session source will be
     * something like 'yahoo-xyz' when logging in with the first yahoo account and
     * 'yahoo-xyt' when logging in with the other.
     */
    $aggsource = qa_open_login_get_new_source($source, $identifier);
    // prepare some data
    if (empty($fields['handle'])) {
        $ohandle = ucfirst($source);
    } else {
        $ohandle = preg_replace('/[\\@\\+\\/]/', ' ', $fields['handle']);
    }
    $oemail = null;
    if (strlen(@$fields['email']) && $fields['confirmed']) {
        // only if email is confirmed
        $oemail = $fields['email'];
    }
    if ($countusers) {
        // user exists so log them in
        //always update email and handle
        if ($oemail) {
            qa_db_user_login_set__open($source, $identifier, 'oemail', $oemail);
        }
        qa_db_user_login_set__open($source, $identifier, 'ohandle', $ohandle);
        qa_set_logged_in_user($users[0]['userid'], $users[0]['handle'], $remember, $aggsource);
    } else {
        // create and log in user
        require_once QA_INCLUDE_DIR . 'qa-app-users-edit.php';
        qa_db_user_login_sync(true);
        $users = qa_db_user_login_find($source, $identifier);
        // check again after table is locked
        if (count($users) == 1) {
            //always update email and handle
            if ($oemail) {
                qa_db_user_login_set__open($source, $identifier, 'oemail', $oemail);
            }
            qa_db_user_login_set__open($source, $identifier, 'ohandle', $ohandle);
            qa_db_user_login_sync(false);
            qa_set_logged_in_user($users[0]['userid'], $users[0]['handle'], $remember, $aggsource);
        } else {
            $handle = qa_handle_make_valid(@$fields['handle']);
            // check if email address already exists
            $emailusers = array();
            if (strlen(@$fields['email']) && $fields['confirmed']) {
                // only if email is confirmed
                $emailusers = qa_db_user_find_by_email_or_oemail__open($fields['email']);
                if (count($emailusers)) {
                    // unset regular email to prevent duplicates
                    unset($fields['email']);
                }
            }
            $userid = qa_create_new_user((string) @$fields['email'], null, $handle, isset($fields['level']) ? $fields['level'] : QA_USER_LEVEL_BASIC, @$fields['confirmed']);
            qa_db_user_set($userid, 'oemail', $oemail);
            qa_db_user_login_add($userid, $source, $identifier);
            qa_db_user_login_set__open($source, $identifier, 'oemail', $oemail);
            qa_db_user_login_set__open($source, $identifier, 'ohandle', $ohandle);
            qa_db_user_login_sync(false);
            $profilefields = array('name', 'location', 'website', 'about');
            foreach ($profilefields as $fieldname) {
                if (strlen(@$fields[$fieldname])) {
                    qa_db_user_profile_set($userid, $fieldname, $fields[$fieldname]);
                }
            }
            if (strlen(@$fields['avatar'])) {
                qa_set_user_avatar($userid, $fields['avatar']);
            }
            qa_set_logged_in_user($userid, $handle, $remember, $aggsource);
            return count($emailusers);
        }
    }
    return 0;
}