Advertisement:

Author Topic: Avatar Select on Register  (Read 101295 times)

Offline vbgamer45

  • SMF Friend
  • SMF Super Hero
  • *
  • Posts: 21,071
    • smfhacks on Facebook
    • VBGAMER45 on GitHub
    • @createaforum on Twitter
    • SMF For Free
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #140 on: January 03, 2012, 06:48:35 PM »
You may have to reinstall the mod depending on your upgraded your forum.
Community Suite for SMF - Take your forum to the next level built for SMF, Gallery,Store,Classifieds,Downloads,more!

SMFHacks.com -  Paid Modifications for SMF

Mods:
EzPortal - Portal System for SMF
SMF Gallery Pro
SMF Store SMF Classifieds Ad Seller Pro

Offline Surferbird

  • Full Member
  • ***
  • Posts: 473
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #141 on: January 04, 2012, 04:09:44 AM »
I have uninstalled/installed and try to look for errors but can't find any, i'm no specialist in this codes :(

I'll post you the subs-members.php because in the installation process it says it failed, but to me
this file looks okay. I would appreciate if you take a look on it, the avatar image is still missing
from the register form?

Code: [Select]
<?php

/**
 * Simple Machines Forum (SMF)
 *
 * @package SMF
 * @author Simple Machines http://www.simplemachines.org
 * @copyright 2011 Simple Machines
 * @license http://www.simplemachines.org/about/smf/license.php BSD
 *
 * @version 2.0.1
 */

if (!defined('SMF'))
die('Hacking attempt...');

/* This file contains some useful functions for members and membergroups.

void deleteMembers(array $users, bool check_not_admin = false)
- delete of one or more members.
- requires profile_remove_own or profile_remove_any permission for
  respectively removing your own account or any account.
- non-admins cannot delete admins.
- changes author of messages, topics and polls to guest authors.
- removes all log entries concerning the deleted members, except the
  error logs, ban logs and moderation logs.
- removes these members' personal messages (only the inbox), avatars,
  ban entries, theme settings, moderator positions, poll votes, and
  karma votes.
- updates member statistics afterwards.

int registerMember(array options, bool return_errors)
- registers a member to the forum.
- returns the ID of the newly created member.
- allows two types of interface: 'guest' and 'admin'. The first
  includes hammering protection, the latter can perform the
  registration silently.
- the strings used in the options array are assumed to be escaped.
- allows to perform several checks on the input, e.g. reserved names.
- adjusts member statistics.
- if an error is detected will fatal error on all errors unless return_errors is true.

bool isReservedName(string name, int id_member = 0, bool is_name = true, bool fatal = true)
- checks if name is a reserved name or username.
- if is_name is false, the name is assumed to be a username.
- the id_member variable is used to ignore duplicate matches with the
  current member.

array groupsAllowedTo(string permission, int board_id = null)
- retrieves a list of membergroups that are allowed to do the given
  permission.
- if board_id is not null, a board permission is assumed.
- takes different permission settings into account.
- returns an array containing an array for the allowed membergroup ID's
  and an array for the denied membergroup ID's.

array membersAllowedTo(string permission, int board_id = null)
- retrieves a list of members that are allowed to do the given
  permission.
- if board_id is not null, a board permission is assumed.
- takes different permission settings into account.
- takes possible moderators (on board 'board_id') into account.
- returns an array containing member ID's.

int reattributePosts(int id_member, string email = false, string membername = false, bool add_to_post_count = false)
- reattribute guest posts to a specified member.
- does not check for any permissions.
- returns the number of successful reattributed posts.
- if add_to_post_count is set, the member's post count is increased.

void BuddyListToggle()
- add a member to your buddy list or remove it.
- requires profile_identity_own permission.
- called by ?action=buddy;u=x;session_id=y.
- redirects to ?action=profile;u=x.

void populateDuplicateMembers(&array members)
// !!!

*/

// Delete a group of/single member.
function deleteMembers($users$check_not_admin false)
{
global $sourcedir$modSettings$user_info$smcFunc;

// Try give us a while to sort this out...
@set_time_limit(600);
// Try to get some more memory.
if (@ini_get('memory_limit') < 128)
@ini_set('memory_limit''128M');

// If it's not an array, make it so!
if (!is_array($users))
$users = array($users);
else
$users array_unique($users);

// Make sure there's no void user in here.
$users array_diff($users, array(0));

// How many are they deleting?
if (empty($users))
return;
elseif (count($users) == 1)
{
list ($user) = $users;

if ($user == $user_info['id'])
isAllowedTo('profile_remove_own');
else
isAllowedTo('profile_remove_any');
}
else
{
foreach ($users as $k => $v)
$users[$k] = (int) $v;

// Deleting more than one?  You can't have more than one account...
isAllowedTo('profile_remove_any');
}

// Get their names for logging purposes.
$request $smcFunc['db_query']('''
SELECT id_member, member_name, CASE WHEN id_group = {int:admin_group} OR FIND_IN_SET({int:admin_group}, additional_groups) != 0 THEN 1 ELSE 0 END AS is_admin
FROM {db_prefix}members
WHERE id_member IN ({array_int:user_list})
LIMIT ' 
count($users),
array(
'user_list' => $users,
'admin_group' => 1,
)
);
$admins = array();
$user_log_details = array();
while ($row $smcFunc['db_fetch_assoc']($request))
{
if ($row['is_admin'])
$admins[] = $row['id_member'];
$user_log_details[$row['id_member']] = array($row['id_member'], $row['member_name']);
}
$smcFunc['db_free_result']($request);

if (empty($user_log_details))
return;

// Make sure they aren't trying to delete administrators if they aren't one.  But don't bother checking if it's just themself.
if (!empty($admins) && ($check_not_admin || (!allowedTo('admin_forum') && (count($users) != || $users[0] != $user_info['id']))))
{
$users array_diff($users$admins);
foreach ($admins as $id)
unset($user_log_details[$id]);
}

// No one left?
if (empty($users))
return;

// Log the action - regardless of who is deleting it.
$log_inserts = array();
foreach ($user_log_details as $user)
{
// Integration rocks!
call_integration_hook('integrate_delete_member', array($user[0]));

// Add it to the administration log for future reference.
$log_inserts[] = array(
time(), 3$user_info['id'], $user_info['ip'], 'delete_member',
000serialize(array('member' => $user[0], 'name' => $user[1], 'member_acted' => $user_info['name'])),
);

// Remove any cached data if enabled.
if (!empty($modSettings['cache_enable']) && $modSettings['cache_enable'] >= 2)
cache_put_data('user_settings-' $user[0], null60);
}

// Do the actual logging...
if (!empty($log_inserts) && !empty($modSettings['modlog_enabled']))
$smcFunc['db_insert']('',
'{db_prefix}log_actions',
array(
'log_time' => 'int''id_log' => 'int''id_member' => 'int''ip' => 'string-16''action' => 'string',
'id_board' => 'int''id_topic' => 'int''id_msg' => 'int''extra' => 'string-65534',
),
$log_inserts,
array('id_action')
);

// Make these peoples' posts guest posts.
$smcFunc['db_query']('''
UPDATE {db_prefix}messages
SET id_member = {int:guest_id}, poster_email = {string:blank_email}
WHERE id_member IN ({array_int:users})'
,
array(
'guest_id' => 0,
'blank_email' => '',
'users' => $users,
)
);
$smcFunc['db_query']('''
UPDATE {db_prefix}polls
SET id_member = {int:guest_id}
WHERE id_member IN ({array_int:users})'
,
array(
'guest_id' => 0,
'users' => $users,
)
);

// Make these peoples' posts guest first posts and last posts.
$smcFunc['db_query']('''
UPDATE {db_prefix}topics
SET id_member_started = {int:guest_id}
WHERE id_member_started IN ({array_int:users})'
,
array(
'guest_id' => 0,
'users' => $users,
)
);
$smcFunc['db_query']('''
UPDATE {db_prefix}topics
SET id_member_updated = {int:guest_id}
WHERE id_member_updated IN ({array_int:users})'
,
array(
'guest_id' => 0,
'users' => $users,
)
);

$smcFunc['db_query']('''
UPDATE {db_prefix}log_actions
SET id_member = {int:guest_id}
WHERE id_member IN ({array_int:users})'
,
array(
'guest_id' => 0,
'users' => $users,
)
);

$smcFunc['db_query']('''
UPDATE {db_prefix}log_banned
SET id_member = {int:guest_id}
WHERE id_member IN ({array_int:users})'
,
array(
'guest_id' => 0,
'users' => $users,
)
);

$smcFunc['db_query']('''
UPDATE {db_prefix}log_errors
SET id_member = {int:guest_id}
WHERE id_member IN ({array_int:users})'
,
array(
'guest_id' => 0,
'users' => $users,
)
);

// Delete the member.
$smcFunc['db_query']('''
DELETE FROM {db_prefix}members
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);

// Delete the logs...
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_actions
WHERE id_log = {int:log_type}
AND id_member IN ({array_int:users})'
,
array(
'log_type' => 2,
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_boards
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_comments
WHERE id_recipient IN ({array_int:users})
AND comment_type = {string:warntpl}'
,
array(
'users' => $users,
'warntpl' => 'warntpl',
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_group_requests
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_karma
WHERE id_target IN ({array_int:users})
OR id_executor IN ({array_int:users})'
,
array(
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_mark_read
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_notify
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_online
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_subscribed
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}log_topics
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}collapsed_categories
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);

// Make their votes appear as guest votes - at least it keeps the totals right.
//!!! Consider adding back in cookie protection.
$smcFunc['db_query']('''
UPDATE {db_prefix}log_polls
SET id_member = {int:guest_id}
WHERE id_member IN ({array_int:users})'
,
array(
'guest_id' => 0,
'users' => $users,
)
);

// Delete personal messages.
require_once($sourcedir '/PersonalMessage.php');
deleteMessages(nullnull$users);

$smcFunc['db_query']('''
UPDATE {db_prefix}personal_messages
SET id_member_from = {int:guest_id}
WHERE id_member_from IN ({array_int:users})'
,
array(
'guest_id' => 0,
'users' => $users,
)
);

// They no longer exist, so we don't know who it was sent to.
$smcFunc['db_query']('''
DELETE FROM {db_prefix}pm_recipients
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);

// Delete avatar.
require_once($sourcedir '/ManageAttachments.php');
removeAttachments(array('id_member' => $users));

// It's over, no more moderation for you.
$smcFunc['db_query']('''
DELETE FROM {db_prefix}moderators
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);
$smcFunc['db_query']('''
DELETE FROM {db_prefix}group_moderators
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);

// If you don't exist we can't ban you.
$smcFunc['db_query']('''
DELETE FROM {db_prefix}ban_items
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);

// Remove individual theme settings.
$smcFunc['db_query']('''
DELETE FROM {db_prefix}themes
WHERE id_member IN ({array_int:users})'
,
array(
'users' => $users,
)
);

// These users are nobody's buddy nomore.
$request $smcFunc['db_query']('''
SELECT id_member, pm_ignore_list, buddy_list
FROM {db_prefix}members
WHERE FIND_IN_SET({raw:pm_ignore_list}, pm_ignore_list) != 0 OR FIND_IN_SET({raw:buddy_list}, buddy_list) != 0'
,
array(
'pm_ignore_list' => implode(', pm_ignore_list) != 0 OR FIND_IN_SET('$users),
'buddy_list' => implode(', buddy_list) != 0 OR FIND_IN_SET('$users),
)
);
while ($row $smcFunc['db_fetch_assoc']($request))
$smcFunc['db_query']('''
UPDATE {db_prefix}members
SET
pm_ignore_list = {string:pm_ignore_list},
buddy_list = {string:buddy_list}
WHERE id_member = {int:id_member}'
,
array(
'id_member' => $row['id_member'],
'pm_ignore_list' => implode(','array_diff(explode(','$row['pm_ignore_list']), $users)),
'buddy_list' => implode(','array_diff(explode(','$row['buddy_list']), $users)),
)
);
$smcFunc['db_free_result']($request);

// Make sure no member's birthday is still sticking in the calendar...
updateSettings(array(
'calendar_updated' => time(),
));

updateStats('member');
}

function 
registerMember(&$regOptions$return_errors false)
{
global $scripturl$txt$modSettings$context$sourcedir;
global $user_info$options$settings$smcFunc;

loadLanguage('Login');

// We'll need some external functions.
require_once($sourcedir '/Subs-Auth.php');
require_once($sourcedir '/Subs-Post.php');

// Put any errors in here.
$reg_errors = array();

// Registration from the admin center, let them sweat a little more.
if ($regOptions['interface'] == 'admin')
{
is_not_guest();
isAllowedTo('moderate_forum');
}
// If you're an admin, you're special ;).
elseif ($regOptions['interface'] == 'guest')
{
// You cannot register twice...
if (empty($user_info['is_guest']))
redirectexit();

// Make sure they didn't just register with this session.
if (!empty($_SESSION['just_registered']) && empty($modSettings['disableRegisterCheck']))
fatal_lang_error('register_only_once'false);
}

// What method of authorization are we going to use?
if (empty($regOptions['auth_method']) || !in_array($regOptions['auth_method'], array('password''openid')))
{
if (!empty($regOptions['openid']))
$regOptions['auth_method'] = 'openid';
else
$regOptions['auth_method'] = 'password';
}

// No name?!  How can you register with no name?
if (empty($regOptions['username']))
$reg_errors[] = array('lang''need_username');

    
// No avatar?!  You need to get an avatar!
if (empty($regOptions['avatar']) && $_REQUEST['action'] == 'register2')
fatal_error($txt['avatarselect_error_req'], false);


// Spaces and other odd characters are evil...
$regOptions['username'] = preg_replace('~[\t\n\r\x0B\0' . ($context['utf8'] ? ($context['server']['complex_preg_chars'] ? '\x{A0}' "\xC2\xA0") : '\xA0') . ']+~' . ($context['utf8'] ? 'u' ''), ' '$regOptions['username']);

// Don't use too long a name.
if ($smcFunc['strlen']($regOptions['username']) > 25)
$reg_errors[] = array('lang''error_long_name');

// Only these characters are permitted.
if (preg_match('~[<>&"\'=\\\\]~'preg_replace('~&#38;#(?:\\d{1,7}|x[0-9a-fA-F]{1,6});~'''$regOptions['username'])) != || $regOptions['username'] == '_' || $regOptions['username'] == '|' || strpos($regOptions['username'], '[code') !== false || strpos($regOptions['username'], '[/code') !== false)
$reg_errors[] = array('lang''error_invalid_characters_username');

if ($smcFunc['strtolower']($regOptions['username']) === $smcFunc['strtolower']($txt['guest_title']))
$reg_errors[] = array('lang''username_reserved''general', array($txt['guest_title']));

// !!! Separate the sprintf?
if (empty($regOptions['email']) || preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~'$regOptions['email']) === || strlen($regOptions['email']) > 255)
$reg_errors[] = array('done'sprintf($txt['valid_email_needed'], $smcFunc['htmlspecialchars']($regOptions['username'])));

if (!empty($regOptions['check_reserved_name']) && isReservedName($regOptions['username'], 0false))
{
if ($regOptions['password'] == 'chocolate cake')
$reg_errors[] = array('done''Sorry, I don\'t take bribes... you\'ll need to come up with a different name.');
$reg_errors[] = array('done''(' htmlspecialchars($regOptions['username']) . ') ' $txt['name_in_use']);
}

// Generate a validation code if it's supposed to be emailed.
$validation_code '';
if ($regOptions['require'] == 'activation')
$validation_code generateValidationCode();

// If you haven't put in a password generate one.
if ($regOptions['interface'] == 'admin' && $regOptions['password'] == '' && $regOptions['auth_method'] == 'password')
{
mt_srand(time() + 1277);
$regOptions['password'] = generateValidationCode();
$regOptions['password_check'] = $regOptions['password'];
}
// Does the first password match the second?
elseif ($regOptions['password'] != $regOptions['password_check'] && $regOptions['auth_method'] == 'password')
$reg_errors[] = array('lang''passwords_dont_match');

// That's kind of easy to guess...
if ($regOptions['password'] == '')
{
if ($regOptions['auth_method'] == 'password')
$reg_errors[] = array('lang''no_password');
else
$regOptions['password'] = sha1(mt_rand());
}

// Now perform hard password validation as required.
if (!empty($regOptions['check_password_strength']))
{
$passwordError validatePassword($regOptions['password'], $regOptions['username'], array($regOptions['email']));

// Password isn't legal?
if ($passwordError != null)
$reg_errors[] = array('lang''profile_error_password_' $passwordError);
}

// If they are using an OpenID that hasn't been verified yet error out.
// !!! Change this so they can register without having to attempt a login first
if ($regOptions['auth_method'] == 'openid' && (empty($_SESSION['openid']['verified']) || $_SESSION['openid']['openid_uri'] != $regOptions['openid']))
$reg_errors[] = array('lang''openid_not_verified');

// You may not be allowed to register this email.
if (!empty($regOptions['check_email_ban']))
isBannedEmail($regOptions['email'], 'cannot_register'$txt['ban_register_prohibited']);

// Check if the email address is in use.
$request $smcFunc['db_query']('''
SELECT id_member
FROM {db_prefix}members
WHERE email_address = {string:email_address}
OR email_address = {string:username}
LIMIT 1'
,
array(
'email_address' => $regOptions['email'],
'username' => $regOptions['username'],
)
);
// !!! Separate the sprintf?
if ($smcFunc['db_num_rows']($request) != 0)
$reg_errors[] = array('lang''email_in_use'false, array(htmlspecialchars($regOptions['email'])));
$smcFunc['db_free_result']($request);

// If we found any errors we need to do something about it right away!
foreach ($reg_errors as $key => $error)
{
/* Note for each error:
0 = 'lang' if it's an index, 'done' if it's clear text.
1 = The text/index.
2 = Whether to log.
3 = sprintf data if necessary. */
if ($error[0] == 'lang')
loadLanguage('Errors');
$message $error[0] == 'lang' ? (empty($error[3]) ? $txt[$error[1]] : vsprintf($txt[$error[1]], $error[3])) : $error[1];

// What to do, what to do, what to do.
if ($return_errors)
{
if (!empty($error[2]))
log_error($message$error[2]);
$reg_errors[$key] = $message;
}
else
fatal_error($message, empty($error[2]) ? false $error[2]);
}

// If there's any errors left return them at once!
if (!empty($reg_errors))
return $reg_errors;

$reservedVars = array(
'actual_theme_url',
'actual_images_url',
'base_theme_dir',
'base_theme_url',
'default_images_url',
'default_theme_dir',
'default_theme_url',
'default_template',
'images_url',
'number_recent_posts',
'smiley_sets_default',
'theme_dir',
'theme_id',
'theme_layers',
'theme_templates',
'theme_url',
);

// Can't change reserved vars.
if (isset($regOptions['theme_vars']) && array_intersect($regOptions['theme_vars'], $reservedVars) != array())
fatal_lang_error('no_theme');

// Some of these might be overwritten. (the lower ones that are in the arrays below.)
$regOptions['register_vars'] = array(
'member_name' => $regOptions['username'],
'email_address' => $regOptions['email'],
'passwd' => sha1(strtolower($regOptions['username']) . $regOptions['password']),
'password_salt' => substr(md5(mt_rand()), 04) ,
'posts' => 0,
'date_registered' => time(),
'member_ip' => $regOptions['interface'] == 'admin' '127.0.0.1' $user_info['ip'],
'member_ip2' => $regOptions['interface'] == 'admin' '127.0.0.1' $_SERVER['BAN_CHECK_IP'],
'validation_code' => $validation_code,
'real_name' => $regOptions['username'],
'personal_text' => $modSettings['default_personal_text'],
'pm_email_notify' => 1,
'id_theme' => 0,
'id_post_group' => 4,
'lngfile' => '',
'buddy_list' => '',
'pm_ignore_list' => '',
'message_labels' => '',
'website_title' => '',
'website_url' => '',
'location' => '',
'icq' => '',
'aim' => '',
'yim' => '',
'msn' => '',
'time_format' => '',
'signature' => '',
'avatar' => "'$regOptions[avatar]'",
'usertitle' => '',
'secret_question' => '',
'secret_answer' => '',
'additional_groups' => '',
'ignore_boards' => '',
'smiley_set' => '',
'openid_uri' => (!empty($regOptions['openid']) ? $regOptions['openid'] : ''),
);

// Setup the activation status on this new account so it is correct - firstly is it an under age account?
if ($regOptions['require'] == 'coppa')
{
$regOptions['register_vars']['is_activated'] = 5;
// !!! This should be changed.  To what should be it be changed??
$regOptions['register_vars']['validation_code'] = '';
}
// Maybe it can be activated right away?
elseif ($regOptions['require'] == 'nothing')
$regOptions['register_vars']['is_activated'] = 1;
// Maybe it must be activated by email?
elseif ($regOptions['require'] == 'activation')
$regOptions['register_vars']['is_activated'] = 0;
// Otherwise it must be awaiting approval!
else
$regOptions['register_vars']['is_activated'] = 3;

if (isset($regOptions['memberGroup']))
{
// Make sure the id_group will be valid, if this is an administator.
$regOptions['register_vars']['id_group'] = $regOptions['memberGroup'] == && !allowedTo('admin_forum') ? $regOptions['memberGroup'];

// Check if this group is assignable.
$unassignableGroups = array(-13);
$request $smcFunc['db_query']('''
SELECT id_group
FROM {db_prefix}membergroups
WHERE min_posts != {int:min_posts}' 
. (allowedTo('admin_forum') ? '' '
OR group_type = {int:is_protected}'
),
array(
'min_posts' => -1,
'is_protected' => 1,
)
);
while ($row $smcFunc['db_fetch_assoc']($request))
$unassignableGroups[] = $row['id_group'];
$smcFunc['db_free_result']($request);

if (in_array($regOptions['register_vars']['id_group'], $unassignableGroups))
$regOptions['register_vars']['id_group'] = 0;
}

// ICQ cannot be zero.
if (isset($regOptions['extra_register_vars']['icq']) && empty($regOptions['extra_register_vars']['icq']))
$regOptions['extra_register_vars']['icq'] = '';

// Integrate optional member settings to be set.
if (!empty($regOptions['extra_register_vars']))
foreach ($regOptions['extra_register_vars'] as $var => $value)
$regOptions['register_vars'][$var] = $value;

// Integrate optional user theme options to be set.
$theme_vars = array();
if (!empty($regOptions['theme_vars']))
foreach ($regOptions['theme_vars'] as $var => $value)
$theme_vars[$var] = $value;

// Call an optional function to validate the users' input.
call_integration_hook('integrate_register', array(&$regOptions, &$theme_vars));

// Right, now let's prepare for insertion.
$knownInts = array(
'date_registered''posts''id_group''last_login''instant_messages''unread_messages',
'new_pm''pm_prefs''gender''hide_email''show_online''pm_email_notify''karma_good''karma_bad',
'notify_announcements''notify_send_body''notify_regularity''notify_types',
'id_theme''is_activated''id_msg_last_visit''id_post_group''total_time_logged_in''warning',
);
$knownFloats = array(
'time_offset',
);

$column_names = array();
$values = array();
foreach ($regOptions['register_vars'] as $var => $val)
{
$type 'string';
if (in_array($var$knownInts))
$type 'int';
elseif (in_array($var$knownFloats))
$type 'float';
elseif ($var == 'birthdate')
$type 'date';

$column_names[$var] = $type;
$values[$var] = $val;
}

// Register them into the database.
$smcFunc['db_insert']('',
'{db_prefix}members',
$column_names,
$values,
array('id_member')
);
$memberID $smcFunc['db_insert_id']('{db_prefix}members''id_member');

// Update the number of members and latest member's info - and pass the name, but remove the 's.
if ($regOptions['register_vars']['is_activated'] == 1)
updateStats('member'$memberID$regOptions['register_vars']['real_name']);
else
updateStats('member');

// Theme variables too?
if (!empty($theme_vars))
{
$inserts = array();
foreach ($theme_vars as $var => $val)
$inserts[] = array($memberID$var$val);
$smcFunc['db_insert']('insert',
'{db_prefix}themes',
array('id_member' => 'int''variable' => 'string-255''value' => 'string-65534'),
$inserts,
array('id_member''variable')
);
}

// If it's enabled, increase the registrations for today.
trackStats(array('registers' => '+'));

// Administrative registrations are a bit different...
if ($regOptions['interface'] == 'admin')
{
if ($regOptions['require'] == 'activation')
$email_message 'admin_register_activate';
elseif (!empty($regOptions['send_welcome_email']))
$email_message 'admin_register_immediate';

if (isset($email_message))
{
$replacements = array(
'REALNAME' => $regOptions['register_vars']['real_name'],
'USERNAME' => $regOptions['username'],
'PASSWORD' => $regOptions['password'],
'FORGOTPASSWORDLINK' => $scripturl '?action=reminder',
'ACTIVATIONLINK' => $scripturl '?action=activate;u=' $memberID ';code=' $validation_code,
'ACTIVATIONLINKWITHOUTCODE' => $scripturl '?action=activate;u=' $memberID,
'ACTIVATIONCODE' => $validation_code,
);

$emaildata loadEmailTemplate($email_message$replacements);

sendmail($regOptions['email'], $emaildata['subject'], $emaildata['body'], nullnullfalse0);
}

// All admins are finished here.
return $memberID;
}

// Can post straight away - welcome them to your fantastic community...
if ($regOptions['require'] == 'nothing')
{
if (!empty($regOptions['send_welcome_email']))
{
$replacements = array(
'REALNAME' => $regOptions['register_vars']['real_name'],
'USERNAME' => $regOptions['username'],
'PASSWORD' => $regOptions['password'],
'FORGOTPASSWORDLINK' => $scripturl '?action=reminder',
'OPENID' => !empty($regOptions['openid']) ? $regOptions['openid'] : '',
);
$emaildata loadEmailTemplate('register_' . ($regOptions['auth_method'] == 'openid' 'openid_' '') . 'immediate'$replacements);
sendmail($regOptions['email'], $emaildata['subject'], $emaildata['body'], nullnullfalse0);
}

// Send admin their notification.
adminNotify('standard'$memberID$regOptions['username']);
}
// Need to activate their account - or fall under COPPA.
elseif ($regOptions['require'] == 'activation' || $regOptions['require'] == 'coppa')
{
$replacements = array(
'REALNAME' => $regOptions['register_vars']['real_name'],
'USERNAME' => $regOptions['username'],
'PASSWORD' => $regOptions['password'],
'FORGOTPASSWORDLINK' => $scripturl '?action=reminder',
'OPENID' => !empty($regOptions['openid']) ? $regOptions['openid'] : '',
);

if ($regOptions['require'] == 'activation')
$replacements += array(
'ACTIVATIONLINK' => $scripturl '?action=activate;u=' $memberID ';code=' $validation_code,
'ACTIVATIONLINKWITHOUTCODE' => $scripturl '?action=activate;u=' $memberID,
'ACTIVATIONCODE' => $validation_code,
);
else
$replacements += array(
'COPPALINK' => $scripturl '?action=coppa;u=' $memberID,
);

$emaildata loadEmailTemplate('register_' . ($regOptions['auth_method'] == 'openid' 'openid_' '') . ($regOptions['require'] == 'activation' 'activate' 'coppa'), $replacements);

sendmail($regOptions['email'], $emaildata['subject'], $emaildata['body'], nullnullfalse0);
}
// Must be awaiting approval.
else
{
$replacements = array(
'REALNAME' => $regOptions['register_vars']['real_name'],
'USERNAME' => $regOptions['username'],
'PASSWORD' => $regOptions['password'],
'FORGOTPASSWORDLINK' => $scripturl '?action=reminder',
'OPENID' => !empty($regOptions['openid']) ? $regOptions['openid'] : '',
);

$emaildata loadEmailTemplate('register_' . ($regOptions['auth_method'] == 'openid' 'openid_' '') . 'pending'$replacements);

sendmail($regOptions['email'], $emaildata['subject'], $emaildata['body'], nullnullfalse0);

// Admin gets informed here...
adminNotify('approval'$memberID$regOptions['username']);
}

// Okay, they're for sure registered... make sure the session is aware of this for security. (Just married :P!)
$_SESSION['just_registered'] = 1;

return $memberID;
}

// Check if a name is in the reserved words list. (name, current member id, name/username?.)
function isReservedName($name$current_ID_MEMBER 0$is_name true$fatal true)
{
global $user_info$modSettings$smcFunc$context;

// No cheating with entities please.
$replaceEntities create_function('$string''
$num = substr($string, 0, 1) === \'x\' ? hexdec(substr($string, 1)) : (int) $string;
if ($num === 0x202E || $num === 0x202D) return \'\'; if (in_array($num, array(0x22, 0x26, 0x27, 0x3C, 0x3E))) return \'&#38;#\' . $num . \';\';' 
.
(empty($context['utf8']) ? 'return $num < 0x20 ? \'\' : ($num < 0x80 ? chr($num) : \'&#38;#\' . $string . \';\');' '
return $num < 0x20 || $num > 0x10FFFF || ($num >= 0xD800 && $num <= 0xDFFF) ? \'\' : ($num < 0x80 ? chr($num) : ($num < 0x800 ? chr(192 | $num >> 6) . chr(128 | $num & 63) : ($num < 0x10000 ? chr(224 | $num >> 12) . chr(128 | $num >> 6 & 63) . chr(128 | $num & 63) : chr(240 | $num >> 18) . chr(128 | $num >> 12 & 63) . chr(128 | $num >> 6 & 63) . chr(128 | $num & 63))));'
)
);

$name preg_replace('~(&#38;#(\d{1,7}|x[0-9a-fA-F]{1,6});)~e''$replaceEntities(\'\\2\')'$name);
$checkName $smcFunc['strtolower']($name);

// Administrators are never restricted ;).
if (!allowedTo('moderate_forum') && ((!empty($modSettings['reserveName']) && $is_name) || !empty($modSettings['reserveUser']) && !$is_name))
{
$reservedNames explode("\n"$modSettings['reserveNames']);
// Case sensitive check?
$checkMe = empty($modSettings['reserveCase']) ? $checkName $name;

// Check each name in the list...
foreach ($reservedNames as $reserved)
{
if ($reserved == '')
continue;

// The admin might've used entities too, level the playing field.
$reservedCheck preg_replace('~(&#38;#(\d{1,7}|x[0-9a-fA-F]{1,6});)~e''$replaceEntities(\'\\2\')'$reserved);

// Case sensitive name?
if (empty($modSettings['reserveCase']))
$reservedCheck $smcFunc['strtolower']($reservedCheck);

// If it's not just entire word, check for it in there somewhere...
if ($checkMe == $reservedCheck || ($smcFunc['strpos']($checkMe$reservedCheck) !== false && empty($modSettings['reserveWord'])))
if ($fatal)
fatal_lang_error('username_reserved''password', array($reserved));
else
return true;
}

$censor_name $name;
if (censorText($censor_name) != $name)
if ($fatal)
fatal_lang_error('name_censored''password', array($name));
else
return true;
}

// Characters we just shouldn't allow, regardless.
foreach (array('*') as $char)
if (strpos($checkName$char) !== false)
if ($fatal)
fatal_lang_error('username_reserved''password', array($char));
else
return true;

// Get rid of any SQL parts of the reserved name...
$checkName strtr($name, array('_' => '\\_''%' => '\\%'));

// Make sure they don't want someone else's name.
$request $smcFunc['db_query']('''
SELECT id_member
FROM {db_prefix}members
WHERE ' 
. (empty($current_ID_MEMBER) ? '' 'id_member != {int:current_member}
AND '
) . '(real_name LIKE {string:check_name} OR member_name LIKE {string:check_name})
LIMIT 1'
,
array(
'current_member' => $current_ID_MEMBER,
'check_name' => $checkName,
)
);
if ($smcFunc['db_num_rows']($request) > 0)
{
$smcFunc['db_free_result']($request);
return true;
}

// Does name case insensitive match a member group name?
$request $smcFunc['db_query']('''
SELECT id_group
FROM {db_prefix}membergroups
WHERE group_name LIKE {string:check_name}
LIMIT 1'
,
array(
'check_name' => $checkName,
)
);
if ($smcFunc['db_num_rows']($request) > 0)
{
$smcFunc['db_free_result']($request);
return true;
}

// Okay, they passed.
return false;
}

// Get a list of groups that have a given permission (on a given board).
function groupsAllowedTo($permission$board_id null)
{
global $modSettings$board_info$smcFunc;

// Admins are allowed to do anything.
$member_groups = array(
'allowed' => array(1),
'denied' => array(),
);

// Assume we're dealing with regular permissions (like profile_view_own).
if ($board_id === null)
{
$request $smcFunc['db_query']('''
SELECT id_group, add_deny
FROM {db_prefix}permissions
WHERE permission = {string:permission}'
,
array(
'permission' => $permission,
)
);
while ($row $smcFunc['db_fetch_assoc']($request))
$member_groups[$row['add_deny'] === '1' 'allowed' 'denied'][] = $row['id_group'];
$smcFunc['db_free_result']($request);
}

// Otherwise it's time to look at the board.
else
{
// First get the profile of the given board.
if (isset($board_info['id']) && $board_info['id'] == $board_id)
$profile_id $board_info['profile'];
elseif ($board_id !== 0)
{
$request $smcFunc['db_query']('''
SELECT id_profile
FROM {db_prefix}boards
WHERE id_board = {int:id_board}
LIMIT 1'
,
array(
'id_board' => $board_id,
)
);
if ($smcFunc['db_num_rows']($request) == 0)
fatal_lang_error('no_board');
list ($profile_id) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
}
else
$profile_id 1;

$request $smcFunc['db_query']('''
SELECT bp.id_group, bp.add_deny
FROM {db_prefix}board_permissions AS bp
WHERE bp.permission = {string:permission}
AND bp.id_profile = {int:profile_id}'
,
array(
'profile_id' => $profile_id,
'permission' => $permission,
)
);
while ($row $smcFunc['db_fetch_assoc']($request))
$member_groups[$row['add_deny'] === '1' 'allowed' 'denied'][] = $row['id_group'];
$smcFunc['db_free_result']($request);
}

// Denied is never allowed.
$member_groups['allowed'] = array_diff($member_groups['allowed'], $member_groups['denied']);

return $member_groups;
}

// Get a list of members that have a given permission (on a given board).
function membersAllowedTo($permission$board_id null)
{
global $smcFunc;

$member_groups groupsAllowedTo($permission$board_id);

$include_moderators in_array(3$member_groups['allowed']) && $board_id !== null;
$member_groups['allowed'] = array_diff($member_groups['allowed'], array(3));

$exclude_moderators in_array(3$member_groups['denied']) && $board_id !== null;
$member_groups['denied'] = array_diff($member_groups['denied'], array(3));

$request $smcFunc['db_query']('''
SELECT mem.id_member
FROM {db_prefix}members AS mem' 
. ($include_moderators || $exclude_moderators '
LEFT JOIN {db_prefix}moderators AS mods ON (mods.id_member = mem.id_member AND mods.id_board = {int:board_id})' 
'') . '
WHERE (' 
. ($include_moderators 'mods.id_member IS NOT NULL OR ' '') . 'mem.id_group IN ({array_int:member_groups_allowed}) OR FIND_IN_SET({raw:member_group_allowed_implode}, mem.additional_groups) != 0)' . (empty($member_groups['denied']) ? '' '
AND NOT (' 
. ($exclude_moderators 'mods.id_member IS NOT NULL OR ' '') . 'mem.id_group IN ({array_int:member_groups_denied}) OR FIND_IN_SET({raw:member_group_denied_implode}, mem.additional_groups) != 0)'),
array(
'member_groups_allowed' => $member_groups['allowed'],
'member_groups_denied' => $member_groups['denied'],
'board_id' => $board_id,
'member_group_allowed_implode' => implode(', mem.additional_groups) != 0 OR FIND_IN_SET('$member_groups['allowed']),
'member_group_denied_implode' => implode(', mem.additional_groups) != 0 OR FIND_IN_SET('$member_groups['denied']),
)
);
$members = array();
while ($row $smcFunc['db_fetch_assoc']($request))
$members[] = $row['id_member'];
$smcFunc['db_free_result']($request);

return $members;
}

// This function is used to reassociate members with relevant posts.
function reattributePosts($memID$email false$membername false$post_count false)
{
global $smcFunc;

// Firstly, if email and username aren't passed find out the members email address and name.
if ($email === false && $membername === false)
{
$request $smcFunc['db_query']('''
SELECT email_address, member_name
FROM {db_prefix}members
WHERE id_member = {int:memID}
LIMIT 1'
,
array(
'memID' => $memID,
)
);
list ($email$membername) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
}

// If they want the post count restored then we need to do some research.
if ($post_count)
{
$request $smcFunc['db_query']('''
SELECT COUNT(*)
FROM {db_prefix}messages AS m
INNER JOIN {db_prefix}boards AS b ON (b.id_board = m.id_board AND b.count_posts = {int:count_posts})
WHERE m.id_member = {int:guest_id}
AND m.approved = {int:is_approved}
AND m.icon != {string:recycled_icon}' 
. (empty($email) ? '' '
AND m.poster_email = {string:email_address}'
) . (empty($membername) ? '' '
AND m.poster_name = {string:member_name}'
),
array(
'count_posts' => 0,
'guest_id' => 0,
'email_address' => $email,
'member_name' => $membername,
'is_approved' => 1,
'recycled_icon' => 'recycled',
)
);
list ($messageCount) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);

updateMemberData($memID, array('posts' => 'posts + ' $messageCount));
}

$query_parts = array();
if (!empty($email))
$query_parts[] = 'poster_email = {string:email_address}';
if (!empty($membername))
$query_parts[] = 'poster_name = {string:member_name}';
$query implode(' AND '$query_parts);

// Finally, update the posts themselves!
$smcFunc['db_query']('''
UPDATE {db_prefix}messages
SET id_member = {int:memID}
WHERE ' 
$query,
array(
'memID' => $memID,
'email_address' => $email,
'member_name' => $membername,
)
);

return $smcFunc['db_affected_rows']();
}

// This simple function adds/removes the passed user from the current users buddy list.
function BuddyListToggle()
{
global $user_info;

checkSession('get');

isAllowedTo('profile_identity_own');
is_not_guest();

if (empty($_REQUEST['u']))
fatal_lang_error('no_access'false);
$_REQUEST['u'] = (int) $_REQUEST['u'];

// Remove if it's already there...
if (in_array($_REQUEST['u'], $user_info['buddies']))
$user_info['buddies'] = array_diff($user_info['buddies'], array($_REQUEST['u']));
// ...or add if it's not and if it's not you.
elseif ($user_info['id'] != $_REQUEST['u'])
$user_info['buddies'][] = (int) $_REQUEST['u'];

// Update the settings.
updateMemberData($user_info['id'], array('buddy_list' => implode(','$user_info['buddies'])));

// Redirect back to the profile
redirectexit('action=profile;u=' $_REQUEST['u']);
}

function 
list_getMembers($start$items_per_page$sort$where$where_params = array(), $get_duplicates false)
{
global $smcFunc;

$request $smcFunc['db_query']('''
SELECT
mem.id_member, mem.member_name, mem.real_name, mem.email_address, mem.icq, mem.aim, mem.yim, mem.msn, mem.member_ip, mem.member_ip2, mem.last_login,
mem.posts, mem.is_activated, mem.date_registered, mem.id_group, mem.additional_groups, mg.group_name
FROM {db_prefix}members AS mem
LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = mem.id_group)
WHERE ' 
$where '
ORDER BY {raw:sort}
LIMIT {int:start}, {int:per_page}'
,
array_merge($where_params, array(
'sort' => $sort,
'start' => $start,
'per_page' => $items_per_page,
))
);

$members = array();
while ($row $smcFunc['db_fetch_assoc']($request))
$members[] = $row;
$smcFunc['db_free_result']($request);

// If we want duplicates pass the members array off.
if ($get_duplicates)
populateDuplicateMembers($members);

return $members;
}

function 
list_getNumMembers($where$where_params = array())
{
global $smcFunc$modSettings;

// We know how many members there are in total.
if (empty($where) || $where == '1')
$num_members $modSettings['totalMembers'];

// The database knows the amount when there are extra conditions.
else
{
$request $smcFunc['db_query']('''
SELECT COUNT(*)
FROM {db_prefix}members AS mem
WHERE ' 
$where,
array_merge($where_params, array(
))
);
list ($num_members) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
}

return $num_members;
}

function 
populateDuplicateMembers(&$members)
{
global $smcFunc;

// This will hold all the ip addresses.
$ips = array();
foreach ($members as $key => $member)
{
// Create the duplicate_members element.
$members[$key]['duplicate_members'] = array();

// Store the IPs.
if (!empty($member['member_ip']))
$ips[] = $member['member_ip'];
if (!empty($member['member_ip2']))
$ips[] = $member['member_ip2'];
}

$ips array_unique($ips);

if (empty($ips))
return false;

// Fetch all members with this IP address, we'll filter out the current ones in a sec.
$request $smcFunc['db_query']('''
SELECT
id_member, member_name, email_address, member_ip, member_ip2, is_activated
FROM {db_prefix}members
WHERE member_ip IN ({array_string:ips})
OR member_ip2 IN ({array_string:ips})'
,
array(
'ips' => $ips,
)
);
$duplicate_members = array();
$duplicate_ids = array();
while ($row $smcFunc['db_fetch_assoc']($request))
{
//$duplicate_ids[] = $row['id_member'];

$member_context = array(
'id' => $row['id_member'],
'name' => $row['member_name'],
'email' => $row['email_address'],
'is_banned' => $row['is_activated'] > 10,
'ip' => $row['member_ip'],
'ip2' => $row['member_ip2'],
);

if (in_array($row['member_ip'], $ips))
$duplicate_members[$row['member_ip']][] = $member_context;
if ($row['member_ip'] != $row['member_ip2'] && in_array($row['member_ip2'], $ips))
$duplicate_members[$row['member_ip2']][] = $member_context;
}
$smcFunc['db_free_result']($request);

// Also try to get a list of messages using these ips.
$request $smcFunc['db_query']('''
SELECT
m.poster_ip, mem.id_member, mem.member_name, mem.email_address, mem.is_activated
FROM {db_prefix}messages AS m
INNER JOIN {db_prefix}members AS mem ON (mem.id_member = m.id_member)
WHERE m.id_member != 0
. (!empty($duplicate_ids) ? 'AND m.id_member NOT IN ({array_int:duplicate_ids})' '') . '
AND m.poster_ip IN ({array_string:ips})'
,
array(
'duplicate_ids' => $duplicate_ids,
'ips' => $ips,
)
);

$had_ips = array();
while ($row $smcFunc['db_fetch_assoc']($request))
{
// Don't collect lots of the same.
if (isset($had_ips[$row['poster_ip']]) && in_array($row['id_member'], $had_ips[$row['poster_ip']]))
continue;
$had_ips[$row['poster_ip']][] = $row['id_member'];

$duplicate_members[$row['poster_ip']][] = array(
'id' => $row['id_member'],
'name' => $row['member_name'],
'email' => $row['email_address'],
'is_banned' => $row['is_activated'] > 10,
'ip' => $row['poster_ip'],
'ip2' => $row['poster_ip'],
);
}
$smcFunc['db_free_result']($request);

// Now we have all the duplicate members, stick them with their respective member in the list.
if (!empty($duplicate_members))
foreach ($members as $key => $member)
{
if (isset($duplicate_members[$member['member_ip']]))
$members[$key]['duplicate_members'] = $duplicate_members[$member['member_ip']];
if ($member['member_ip'] != $member['member_ip2'] && isset($duplicate_members[$member['member_ip2']]))
$members[$key]['duplicate_members'] = array_merge($member['duplicate_members'], $duplicate_members[$member['member_ip2']]);

// Check we don't have lots of the same member.
$member_track = array($member['id_member']);
foreach ($members[$key]['duplicate_members'] as $duplicate_id_member => $duplicate_member)
{
if (in_array($duplicate_member['id'], $member_track))
{
unset($members[$key]['duplicate_members'][$duplicate_id_member]);
continue;
}

$member_track[] = $duplicate_member['id'];
}
}
}

// Generate a random validation code.
function generateValidationCode()
{
global $smcFunc$modSettings;

$request $smcFunc['db_query']('get_random_number''
SELECT RAND()'
,
array(
)
);

list ($dbRand) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);

return substr(preg_replace('/\W/'''sha1(microtime() . mt_rand() . $dbRand $modSettings['rand_seed'])), 010);
}

?>
.:: Always something to ask - always grateful for assistance ::.

Offline luper

  • Newbie
  • *
  • Posts: 4
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #142 on: February 20, 2012, 12:48:39 PM »
I totally agree with some of the posts. I would use this mod if they were allowed to upload/link to their own avatar initially.

Offline vbgamer45

  • SMF Friend
  • SMF Super Hero
  • *
  • Posts: 21,071
    • smfhacks on Facebook
    • VBGAMER45 on GitHub
    • @createaforum on Twitter
    • SMF For Free
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #143 on: February 20, 2012, 01:11:50 PM »
I totally agree with some of the posts. I would use this mod if they were allowed to upload/link to their own avatar initially.
Maybe one day if someone donates for it.
Community Suite for SMF - Take your forum to the next level built for SMF, Gallery,Store,Classifieds,Downloads,more!

SMFHacks.com -  Paid Modifications for SMF

Mods:
EzPortal - Portal System for SMF
SMF Gallery Pro
SMF Store SMF Classifieds Ad Seller Pro

Offline Silvershark78

  • Jr. Member
  • **
  • Posts: 177
  • Gender: Male
  • way to new to this stuff!
    • Hyundai Motor Club
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #144 on: December 07, 2012, 07:33:12 PM »
Is there a way to tell new people that want to register that it is temporary and for registartion only? I assume that would let live spammers know what to do. It would help against bots though
Still have lots to learn

Offline pastorvictor

  • Semi-Newbie
  • *
  • Posts: 74
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #145 on: February 10, 2013, 01:39:25 AM »
I already installed this script and I think it's great but my only problem is that my board is installed in Spanish and this script is in English :S

Is there a way for me to manually change the language after it's been installed? Or is the mod available in Spanish?

Offline vbgamer45

  • SMF Friend
  • SMF Super Hero
  • *
  • Posts: 21,071
    • smfhacks on Facebook
    • VBGAMER45 on GitHub
    • @createaforum on Twitter
    • SMF For Free
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #146 on: February 10, 2013, 01:24:07 PM »
Yes you can modify the language strings added to the themes/default/languages/modifications.english.php or move to modifications.spanish.php
Community Suite for SMF - Take your forum to the next level built for SMF, Gallery,Store,Classifieds,Downloads,more!

SMFHacks.com -  Paid Modifications for SMF

Mods:
EzPortal - Portal System for SMF
SMF Gallery Pro
SMF Store SMF Classifieds Ad Seller Pro

Offline Joomlamz

  • SMF Hero
  • ******
  • Posts: 2,629
  • Gender: Male
  • Suporte SmfPT
    • apllicmz on Facebook
    • apllicmz on GitHub
    • https://www.linkedin.com/in/aplic on LinkedIn
    • @aplichosting on Twitter
    • Webdesign
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #147 on: September 15, 2013, 12:39:45 PM »
Nice Mod
when update portuguese dont forget portuguese files


Code: [Select]
<file name="$languagedir/Modifications.portuguese_pt-utf8.php" error="skip">
<operation>
<search position="end"></search>
<add><![CDATA[
// Begin Avatar Select  Text Strings Translate By Candidosa2
$txt['avatarselect_error_req'] =  'Um avatar &eacute; necess&aacute;rio! Por favor seleccione um.';
$txt['avatarselect_avatar'] = 'Selecione um Avatar:';
$txt['avatarselect_pleaseselect'] = 'Por favor escolha um avatar.';
// END Avatar Select Text Strings Support SMFPT.NET
]]></add>
</operation>
</file>


<file name="$languagedir/Modifications.portuguese_pt.php" error="skip">
<operation>
<search position="end"></search>
<add><![CDATA[
// Begin Avatar Select  Text Strings Translate By Candidosa2
$txt['avatarselect_error_req'] =  'Um avatar &eacute; necess&aacute;rio! Por favor seleccione um.';
$txt['avatarselect_avatar'] = 'Selecione um Avatar:';
$txt['avatarselect_pleaseselect'] = 'Por favor escolha um avatar.';
// END Avatar Select Text Strings Support SMFPT.NET
]]></add>
</operation>
</file>



Offline Uhura!

  • Sophist Member
  • *****
  • Posts: 1,038
  • Gender: Female
    • Our Parenting Spot
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #148 on: November 23, 2013, 04:39:31 PM »
I can't even uninstall -

Here's what happens when I visit my forum now:

White screen & error~>

Quote
Parse error: syntax error, unexpected '$txt' (T_VARIABLE) in /home/ourmo0/public_html/community/Themes/default/languages/Modifications.english.php on line 219

Can you help?
:) Our Parenting Spot is an online parenting community for fathers, mothers, grandparents, teachers, and family service professionals. 8) We also provide low cost advertising options for authors, family service providers, and businesses with family friendly products and services. ;D Visit us @ www.OurParentingSpot.net!

Offline Shambles

  • SMF Hero
  • ******
  • Posts: 5,074
  • Gender: Male
    • i30 Owners Club
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #149 on: November 23, 2013, 04:56:13 PM »
If you can attach the file, we can have it fixed for you in no time :)

Offline Uhura!

  • Sophist Member
  • *****
  • Posts: 1,038
  • Gender: Female
    • Our Parenting Spot
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #150 on: November 23, 2013, 05:23:45 PM »
Thanks so much!

Quote
<?php
// Version: 2.0; Modifications

// SMF Sitemap Strings
$txt['sitemap'] = 'Sitemap';
$txt['sitemap_boards'] = 'Boards';
$txt['sitemap_topics'] = 'Topics';
$txt['sitemap_xml'] = 'Show Sitemap XML <em>link</em>';
$txt['sitemap_topic_count'] = 'Maximum number of topics to display in XML sitemap<br /><span class="smalltext">0 to show all (<strong class="error">NOT RECOMMENDED ON LARGE BOARDS</strong>)</span>';
$txt['sitemap_cache_ttl'] = 'Time that XML data should be cached (seconds)';
$txt['sitemap_board_none'] = 'No boards to display';
$txt['sitemap_topic_none'] = 'No topics to display';
$txt['sitemap_30day_priority'] = 'Priority for topics active in the last 30 days';
$txt['sitemap_60day_priority'] = 'Priority for topics active in the last 60 days';
$txt['sitemap_90day_priority'] = 'Priority for topics active in the last 90 days';
$txt['sitemap_91day_priority'] = 'Priority for topics older than 90 days';
$txt['invalid_sitemap_subaction'] = 'Invalid selection';

$txt['banned_user_avatar_url'] = 'For banned users, use this URL as an avatar:';
$txt['default_user_avatar_url'] = 'For users who have not set an avatar, use this URL as an avatar:';

$txt['noisen_footnote'] = 'Footnote';

$txt['infobox'] = 'Add Info Box';

$txt['sd_add'] = 'Share me:';
$txt['sd_social_bookmarks'] = 'Share me';

$txt['searchi'] = 'Search';
$txt['paypal'] = 'Donations';
$txt['cannot_payPal_view'] = 'Sorry, you\'re not allowed to view the Donation Page.';
$txt['permissionname_payPal_view'] = 'View Donation Page';
$txt['permissionhelp_payPal_view'] = 'Allow the people to view the Donation Page.  If not set, the people will not see the page.';
$txt['DonationsNotEnabled'] = 'Sorry, the donation page is not enabled at the moment. Please check back later.';
// Reason for editing mod
$txt['reason'] = 'Reason';
$txt['reason_edit'] = 'Reason For Edit';
$txt['permissionname_reason_edit'] = 'Set Reason for edit';
$txt['permissionhelp_reason_edit'] = 'Set if the membergroup is allowed to put the reason for edit their own posts.';
// Reason for editing mod END

//reCAPTCHA for SMF
$txt['recaptcha_configure'] = 'reCAPTCHA Verification System';
$txt['recaptcha_configure_desc'] = 'Use the reCAPTCHA Verification System. Don\'t have a key for reCAPTCHA? <a href="http://recaptcha.net/api/getkey?app=recaptcha_for_smf"> Get your reCAPTCHA key here</a>.';
$txt['recaptcha_enabled'] = 'Use reCAPTCHA Verification System';
$txt['recaptcha_enable_desc'] = '(This replaces the built-in visual verification with reCAPTCHA)';
$txt['recaptcha_theme'] = 'reCAPTCHA Theme';
$txt['recaptcha_theme_clean'] = 'Clean';
$txt['recaptcha_theme_blackglass'] = 'Black Glass';
$txt['recaptcha_theme_red'] = 'Red';
$txt['recaptcha_theme_white'] = 'White';
$txt['recaptcha_public_key'] = 'reCAPTCHA Public Key';
$txt['recaptcha_private_key'] = 'reCAPTCHA Private Key';
$txt['recaptcha_no_key_question'] = 'Don\'t have a key for reCAPTCHA?';
$txt['recaptcha_get_key'] = 'Get your reCAPTCHA key here.';

$txt['permissionname_profile_signature'] = 'Edit signature';
$txt['permissionname_profile_signature_own'] = 'Own signature';
$txt['permissionname_profile_signature_any'] = 'Any signature';
$txt['permissionname_simple_profile_signature_own'] = 'Edit their signature';
$txt['permissionname_simple_profile_signature_any'] = 'Edit other people\'s signatures';

$txt['permissionname_profile_website'] = 'Edit website details';
$txt['permissionname_profile_website_own'] = 'Own profile';
$txt['permissionname_profile_website_any'] = 'Any profile';
$txt['permissionname_simple_profile_website_own'] = 'Edit their website details';
$txt['permissionname_simple_profile_website_any'] = 'Edit other people\'s website details';

$txt['permissionname_profile_displayname'] = 'Edit display name';
$txt['permissionname_profile_displayname_own'] = 'Own display name';
$txt['permissionname_profile_displayname_any'] = 'Any display name';
$txt['permissionname_simple_profile_displayname_own'] = 'Edit their displayed name';
$txt['permissionname_simple_profile_displayname_any'] = 'Edit other people\'s displayed name';

// PJL : Start of Redirect on login/logout Mod.
$txt['logon_redirect_enable'] = 'Enable Logon Redirect<br /><span class="smalltext">(This redirect users to given URL when they login)</span>';
$txt['logon_redirect_url'] = 'Enter Login URL';
$txt['logout_redirect_enable'] = 'Enable Logout Redirect?<br /><span class="smalltext">(This redirect users to given URL when they logout)</span>';
$txt['logout_redirect_url'] = 'Enter Logout URL';
// End Mod.

$txt['lbnr'] = 'Look But No Read';
$txt['mods_cat_lbnr'] = 'Look But No Read';
$txt['boards_deny_guest_browsing'] = 'Boards to deny guest reading:';
$txt['categories_deny_guest_browsing'] = 'Categories to deny guest reading:';
$txt['enable_guest_browsing_control'] = 'Enable guest browsing control:';

// Topic Solved
$txt['topic_solved'] = 'Topic Solved';
$txt['topic_not_solved'] = 'Topic Not Solved';
$txt['topic_solved_quick'] = 'Mark selected as solved';
$txt['topic_solved_quick_confirm'] = 'Are you sure you want to mark selected topics as solved?';

$txt['topic_solved_board'] = 'Topic Solved Board';
$txt['topic_solved_board_desc'] = 'Enables the Topic Solved feature in the board';

$txt['topic_solved_log'] = 'Topic Solved Log';
$txt['topic_solved_no_log'] = 'There are no topic solve actions logged.';
$txt['topic_solved_desc'] = 'Lists topic solved actions that have been performed by moderators on your forum.';
$txt['modlog_topicsolved_log_desc'] = 'Below is a list of all the topic solved actions that have been carried out by moderators of the forum.<br /><b>Please note:</b> Entries cannot be removed from this log until they are at least twenty-four hours old.';
$txt['modlog_ac_solve'] = 'Solved &quot;{topic}&quot;';
$txt['modlog_ac_not_solve'] = 'Un-Solved &quot;{topic}&quot;';

$txt['permissionname_solve_topic'] = 'Marks topics solved';
$txt['permissionhelp_solve_topic'] = 'This permission allows a user to a topic solved.';
$txt['permissionname_solve_topic_own'] = 'Own topic';
$txt['permissionname_solve_topic_any'] = 'Any topic';
$txt['permissionname_simple_solve_topic_own'] = 'Mark their own topic as solved';
$txt['permissionname_simple_solve_topic_any'] = 'Mark anyone\'s topic as solved';

$txt['topic_solved_error_no_board'] = 'Sorry, topic solved feature is not enabled in this board.';
$txt['cannot_support_tools_solve_topic_own'] = 'You cannot mark your topics as solved.';
$txt['cannot_support_tools_solve_topic_any'] = 'You cannot mark topics as solved.';
// Topic Solved

$txt['pm_register'] = 'Send pm to new members';
$txt['pm_register_id'] = 'Select the ID of the sender';
$txt['pm_register_username'] = 'Select the Username of the sender';
$txt['pm_register_subject'] = 'The subject of the PM';
$txt['pm_register_body'] = 'The message of the PM (BBCODE)';
$txt['pm_register_body_desc'] = 'This is where you set the message that you would like to send to the user. To insert the username of the user just insert "<b>{$username}</b>".  For forum name use "<b>{$forumname}</b>".';

$txt['googleAnalyticsCode'] = 'Google Analytics code<br /><span class="smalltext">E.g. UA-00000000-0</span>';
// Start Posting Announcement mod by Nas
$txt['enable_announcement_guests']='Show an announcement to Guests';
$txt['enable_announcement_members']='Show an announcement to Members';
$txt['text_announcement_guests']='Announcement to display (for Guests)<div class="smalltext">HTML and BBC may be used.</div>';
$txt['text_announcement_members']='Announcement to display (for Memebers) <div class="smalltext">HTML and BBC may be used.</div>';
// End Posting Announcement mod by Nas
// ForumFirewall Start
$txt['permissionname_forumfirewall_goodgroup'] = 'Forum Firewall Whitelist Group';
$txt['permissionhelp_forumfirewall_goodgroup'] = 'This option will make a member group exempt from the Forum Firewall bandwidth check.  This group will not to be tested for Forum Firewall DOS attempts.';
// ForumFirewall End

//Begin Member Notepad Text Strings
$txt['mempad_title'] = 'Personal Notes';
$txt['mempad_save'] = 'Save Notes';
$txt['mempad_error'] = 'You are not allowed to edit this user\'s notepad.';

//END Member Notepad Text Strings         

//  Start Referrals System
$txt['ref_admin'] = 'Referrals System';
$txt['ref_settings'] = 'Settings';
$txt['ref_save_settings'] = 'Save Settings';
$txt['ref_refferals'] = 'Referrals:';
$txt['ref_refferal_link'] = 'Referral Link:';
$txt['ref_reffered_by'] = 'Referred by Membername:';
// Setttings
$txt['ref_showreflink'] = 'Show referral link on profile page';
$txt['ref_showonpost'] = 'Show referrals on post display';
$txt['ref_trackcookiehits'] = 'Track hits for referral link clicks';
$txt['ref_cookietrackdays'] = 'Number of days to store the tracking cookie for referrals';


//  End Referrals System         
//Start S.P.O.X.S. MOD
global $ID_MEMBER;
$txt['spoxs_submit'] = 'Save';
$txt['spoxs_admin_title'] = 'SPOXS - General Configuration';
$txt['spoxs_admin_description'] = 'Setting the area responsible for S.P.O.X.S.(Send.PM.On.X.Posts) Mod';
$txt['spoxs_enable'] = 'Activate Send Pm On X Posts?';
$txt['spoxs_pm_from'] = '<strong>Author ID</strong>
                  <br />ID Author of the user\'s Personal Message.
                  <br />This field is required entrance
                  <br /><strong>Your ID is: '.$ID_MEMBER.'</strong>';
$txt['spoxs_groups_select'] = '<strong>Post count based groups</strong>
                  <br />Select the groups that will be sent to the MP when you get the new Group';                  
$txt['spoxs_pm_subject'] = '<strong>Title</strong>
                     <br />Title PM to be sent';                  
$txt['spoxs_pm_message'] = '<strong>Message</strong>
                     <br />The message received by the user.
                     <br />You can use the variable <strong>[RANK]</strong> to provide for the New Range, <strong>[USERNAME]</strong> to display the user name
                     <br />and<strong>[POSTS]</strong> to show the number of posts filled.
                     <br />Accepts BBCode';      
$txt['spoxs_pm_default_body'] = 'Congratulations [USERNAME], You have [POSTS] posts and now your new group is [RANK].';
$txt['spoxs_pm_default_subject'] = 'Congratulations, New Group.';                  
//End S.P.O.X.S. MOD


// Added by Related Topics
$txt['admin_related_topic'] = 'Related Topics';
$txt['admin_related_topics_information'] = 'Information';
$txt['admin_related_topics_settings'] = 'Settings';
$txt['admin_related_topics_methods'] = 'Methods';

$txt['related_topics_admin_title'] = 'Related Topics';
$txt['related_topics_admin_desc'] = '';

$txt['related_latest_news'] = 'Latest News';
$txt['related_news_unable_to_connect'] = 'Unable to connect to <a href="http://www.smfarcade.info">SMFArcade.info</a> for latest news...';
$txt['related_version_info'] = 'Version Information';
$txt['related_installed_version'] = 'Installed Version';
$txt['related_latest_version'] = 'Latest Version';

$txt['related_topics_ignored_boards'] = 'Ignored Boards';

$txt['related_topics_methods_title'] = 'Methods';
$txt['related_topics_methods'] = 'Select methods used for determining Related Topics<div class="smalltext">Rebuild of index is required after changing these settings</div>';

$txt['related_topics_index'] = 'Index';
$txt['related_topics_rebuild'] = 'Rebuild Indexes';
$txt['related_topics_rebuild_desc'] = 'Use this after changing settings or to build initial cache';

$txt['relatedFulltext'] = 'Fulltext';

$txt['related_topics_settings_title'] = 'Related Topics';
$txt['relatedTopicsEnabled'] = 'Enable Related Topics';
$txt['relatedTopicsCount'] = 'How many related topics to show';

$txt['no_methods_selected'] = 'You haven\'t selected which methods to use to determine related topics';

$txt['related_topics'] = 'Related Topics';
$txt['Advertise'] = 'Advertise';
$txt['Logout'] = 'Logout';
$txt['ContactUs'] = 'Contact Us'
// END Added by Related Topics
// Begin Avatar Select  Text Strings
$txt['avatarselect_error_req'] =  'An avatar is required! Please select one.';
$txt['avatarselect_avatar'] = 'Avatar Select:';
$txt['avatarselect_pleaseselect'] = 'Please select an avatar.';
// END Avatar Select Text Strings

?>
:) Our Parenting Spot is an online parenting community for fathers, mothers, grandparents, teachers, and family service professionals. 8) We also provide low cost advertising options for authors, family service providers, and businesses with family friendly products and services. ;D Visit us @ www.OurParentingSpot.net!

Offline Arantor

  • Resident Overthinker
  • SMF Friend
  • SMF Legend
  • *
  • Posts: 70,549
    • StoryBB/StoryBB on GitHub
Don’t try to tell me that some power can corrupt a person. You haven’t had enough to know what it’s like.

No good deed goes unpunished / No act of charity goes unresented.

Offline Uhura!

  • Sophist Member
  • *****
  • Posts: 1,038
  • Gender: Female
    • Our Parenting Spot
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #152 on: November 23, 2013, 05:25:50 PM »
Thanks a million :D

But I see no avatar selection on the registration form.
:) Our Parenting Spot is an online parenting community for fathers, mothers, grandparents, teachers, and family service professionals. 8) We also provide low cost advertising options for authors, family service providers, and businesses with family friendly products and services. ;D Visit us @ www.OurParentingSpot.net!

Offline Uhura!

  • Sophist Member
  • *****
  • Posts: 1,038
  • Gender: Female
    • Our Parenting Spot
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #153 on: December 28, 2013, 12:32:09 PM »
Would be SUPER if this mod worked!
:) Our Parenting Spot is an online parenting community for fathers, mothers, grandparents, teachers, and family service professionals. 8) We also provide low cost advertising options for authors, family service providers, and businesses with family friendly products and services. ;D Visit us @ www.OurParentingSpot.net!

TheListener

  • Guest
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #154 on: December 28, 2013, 12:53:27 PM »
Are there any errors in the error log?

Offline Uhura!

  • Sophist Member
  • *****
  • Posts: 1,038
  • Gender: Female
    • Our Parenting Spot
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #155 on: December 30, 2013, 11:30:30 AM »
no -

what it did was ruin the spacing at the top of my site & not produce any avatar selection on the registration page so I uninstalled it.
:) Our Parenting Spot is an online parenting community for fathers, mothers, grandparents, teachers, and family service professionals. 8) We also provide low cost advertising options for authors, family service providers, and businesses with family friendly products and services. ;D Visit us @ www.OurParentingSpot.net!

Offline DSystem

  • Jr. Member
  • **
  • Posts: 238
  • Gender: Male
  • EletronicaBR - Admin
    • eletronicaBR.com
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #156 on: December 30, 2013, 12:35:12 PM »
Use this MOD for over a year and never had problems. The author this of congratulations!!!

Offline Uhura!

  • Sophist Member
  • *****
  • Posts: 1,038
  • Gender: Female
    • Our Parenting Spot
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #157 on: December 30, 2013, 02:01:24 PM »
Well - what's the secret?

Please help! I WANT this mod :D
:) Our Parenting Spot is an online parenting community for fathers, mothers, grandparents, teachers, and family service professionals. 8) We also provide low cost advertising options for authors, family service providers, and businesses with family friendly products and services. ;D Visit us @ www.OurParentingSpot.net!

Offline drfun

  • Jr. Member
  • **
  • Posts: 191
  • Gender: Male
    • All Student Forum
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #158 on: February 21, 2014, 03:07:22 PM »
This mod is a wonderful one and i have been using it now for months. I sincerely thank the creator of this mod and i also appreciate all his effort.
However recently, i noticed that when some one wants to register using he/her java enabled phone, for example Nokia C3, LG phone, it doesnt work. when they select the avatar, lets say [Musicians], it doesn't loop or load to bring up the avatars of the musicians for them to select. And as a result of this they can not register successfully. However this work perfectly on Android phones.

Please is there a way to fix this, or mute the mod on wireless.templete.php or can the mod be use with Default Avatar mod without any problem, so that even when they can select the avatar there will be on there for them automatically.
All students forum -Global Online community for Students, Ex-Students and their friends

Offline gomzy

  • Semi-Newbie
  • *
  • Posts: 12
Re: Avatar Select on Register (SMF 2.0 Support Added!)
« Reply #159 on: March 20, 2014, 10:36:46 AM »
is it possible to force user to add/choose avatar before completing the registration?

i used Specify avatar by URL - i want users to specific their url and not to leave this blank

any help please, im using smf 2.0