slammeddime:subaccounts 1.0.0 array('LockTopic.php', 'Sticky'), ]]> array('SubAccount.php', 'SwitchSubAccount'), ]]> array( ]]> array( 'label' => $txt['managesubaccounts'], 'file' => 'ManageMembers.php', 'function' => 'ManageSubAccounts', 'icon' => 'members.gif', 'permission' => array('moderate_forum'), 'enabled' => in_array('subaccount', $context['admin_features']), 'subsections' => array( 'settings' => array($txt['settings']), 'view' => array($txt['subaccount_view_all']), ), ), ]]> in_array(1, $user_info['groups']), ]]> !empty($user_settings['id_parent']) ? $user_settings['id_parent'] : 0, 'is_shareable' => !empty($user_settings['is_shareable']), ]]> 0 ? (int) $id_parent : 0; } else $id_parent = 0; } elseif (empty($id_parent) && isset($_SESSION['login_' . $subaccount_cookie]) && ($_SESSION['USER_AGENT'] == $_SERVER['HTTP_USER_AGENT'] || !empty($modSettings['disableCheckUA']))) { // !!! Perhaps we can do some more checking on this, such as on the first octet of the IP? list ($id_parent, $password_parent, $login_span) = @unserialize($_SESSION['login_' . $subaccount_cookie]); $id_parent = !empty($id_parent) && strlen($password_parent) == 40 && $login_span > time() ? (int) $id_parent : 0; } $valid_parent = false; if (!empty($id_parent)) { $request = $smcFunc['db_query']('', ' SELECT passwd, password_salt FROM {db_prefix}members WHERE id_member = {int:id_parent}', array( 'id_parent' => $id_parent, ) ); $parent_user = $smcFunc['db_fetch_assoc']($request); if (strlen($password_parent) == 40) $valid_parent = sha1($parent_user['passwd'] . $parent_user['password_salt']) == $password_parent; else $valid_parent = false; } // If we didn't have a valid user subaccount parent, log them out. if (!$valid_parent) { require_once($sourcedir . '/LogInOut.php'); Logout(true); } // Otherwise we have a valid parent, let's use it else $user_info['id_parent'] = $id_parent; } $request = $smcFunc['db_query']('', ' SELECT mem.id_member, mem.real_name, mem.member_name, mem.is_shareable FROM {db_prefix}members AS mem LEFT JOIN {db_prefix}subaccounts AS sub ON (sub.id_member = mem.id_member) WHERE (sub.id_parent = {int:parent_id} OR mem.id_member = {int:parent_id}) AND mem.id_member != {int:current_id}', array( 'parent_id' => !empty($user_info['id_parent']) ? $user_info['id_parent'] : $user_info['id'], 'current_id' => $user_info['id'], ) ); while ($row = $smcFunc['db_fetch_assoc']($request)) $subaccounts[$row['id_member']] = array( 'id' => $row['id_member'], 'name' => $row['real_name'], 'shareable' => $row['is_shareable'], ); $smcFunc['db_free_result']($request); // put the data into smf's cache if this is not a sharable account if (empty($user_info['is_shareable'])) cache_put_data('user_subaccounts-' . $user_info['id'], $subaccounts, 240); } $user_info['subaccounts'] = !empty($subaccounts) ? $subaccounts : array(); } ]]> = 3) ]]> $id, ) ); while ($row = $smcFunc['db_fetch_assoc']($request)) $subaccounts[$row['id_member']] = array( 'id' => $row['id_member'], 'name' => $row['real_name'], 'shareable' => $row['is_shareable'], ); $smcFunc['db_free_result']($request); // put the data into smf's cache cache_put_data('user_subaccounts-' . $id, $subaccounts, 240); } // Now populate... $user_profile[$id]['subaccounts'] = !empty($subaccounts) ? $subaccounts : array(); } } ]]> timeformat(time() + ($profile['time_offset'] - $user_info['time_offset']) * 3600, false), ]]> $profile['subaccounts'], 'is_subaccount' => !empty($profile['id_parent']), 'is_shareable' => $profile['is_shareable'], ]]> 'ModifySubAccountSettings', 'view' => 'ViewSubAccounts', ); // Needed for the inline permission functions, and the settings template. require_once($sourcedir .'/ManageSettings.php'); loadGeneralSettingParameters($subActions, 'settings'); // Load up all the tabs... $context[$context['admin_menu_name']]['tab_data'] = array( 'title' => &$txt['managesubaccounts'], 'help' => '', 'description' => $txt['managesubaccounts_information'], 'tabs' => array( 'settings' => array( ), 'view' => array( 'label' => $txt['subaccount_view_all'], ), ), ); // Call the right function for this sub-acton. $subActions[$_REQUEST['sa']](); } function ModifySubAccountSettings($return_config = false) { global $context, $txt, $scripturl, $modSettings, $smcFunc; // Set the current sub action. $context['sub_action'] = $_REQUEST['sa']; $config_vars = array( // Is it even enabled?? array('check', 'enableSubAccounts'), ); if (!empty($modSettings['enableSubAccounts'])) $config_vars = array_merge($config_vars, array( '', // General Settings array('check', 'subaccountsInheritParentGroup'), array('check', 'subaccountsShowInMemberlist'), array('check', 'subaccountsShowInProfile'), array('select', 'subaccountsEnablePortalBlock', array('none' => $txt['subaccount_no_portal'], 'sp' => 'SimplePortal 2.x', 'ez' => 'ezPortal 0.2.x' , 'pmx' => 'PortaMx 0.9xx'), 'disabled' => true), // Membergroup settings array('title', 'subaccount_configure_groups'), array('desc', 'subaccount_configure_groups_desc'), array('callback', 'subaccount_group_settings'), )); if ($return_config) return $config_vars; loadLanguage('ManageMembers'); // Get the membergroups that we can set counts on $context['membergroup_counts'] = array(); $request = $smcFunc['db_query']('', ' SELECT id_group, group_name FROM {db_prefix}membergroups WHERE min_posts = {int:min_posts} AND id_group != {int:mod_group}', array( 'min_posts' => -1, 'mod_group' => 3, ) ); $context['membergroup_counts'][] = array( 'id' => 0, 'name' => $txt['membergroups_members'], 'count' => !empty($modSettings['subaccount_max_group_0']) ? $modSettings['subaccount_max_group_0'] : 0, 'disabled' => false, ); while ($row = $smcFunc['db_fetch_assoc']($request)) $context['membergroup_counts'][] = array( 'id' => $row['id_group'], 'name' => $row['group_name'], 'count' => !empty($modSettings['subaccount_max_group_' . $row['id_group']]) ? $modSettings['subaccount_max_group_' . $row['id_group']] : 0, 'disabled' => $row['id_group'] == 1, ); $smcFunc['db_free_result']($request); // Get setup for the page $context['page_title'] = $txt['managesubaccounts']; $context['post_url'] = $scripturl . '?action=admin;area=subaccounts;sa=settings;save'; $context['settings_title'] = $txt['managesubaccounts']; // Saving? if (isset($_GET['save'])) { checkSession(); $save_vars = $config_vars; saveDBSettings($save_vars); if (!empty($_POST['membergroup_count']) && is_array($_POST['membergroup_count'])) { $changeArray = array(); foreach ($_POST['membergroup_count'] as $id => $count) $changeArray['subaccount_max_group_' . (int) $id] = (int) $count; updateSettings($changeArray); } redirectexit('action=admin;area=subaccounts;sa=settings'); } prepareDBSettingContext($config_vars); } function ViewSubAccounts() { global $context, $smcFunc, $txt, $modSettings, $sourcedir, $scripturl; // Set the current sub action. $context['sub_action'] = $_REQUEST['sa']; $context['page_title'] = $txt['managesubaccounts']; $listOptions = array( 'id' => 'member_list', 'items_per_page' => $modSettings['defaultMaxMembers'], 'base_href' => $scripturl . '?action=admin;area=subaccounts;sa=view', 'default_sort_col' => 'id_member', 'get_items' => array( 'function' => 'list_getSubaccounts', ), 'get_count' => array( 'function' => 'list_getNumSubaccounts', ), 'columns' => array( 'id_member' => array( 'header' => array( 'value' => $txt['member_id'], ), 'data' => array( 'db' => 'id_subaccount', 'class' => 'windowbg', 'style' => 'text-align: center;', ), 'sort' => array( 'default' => 'id_subaccount', 'reverse' => 'id_subaccount DESC', ), ), 'subaccount' => array( 'header' => array( 'value' => $txt['subaccount'], ), 'data' => array( 'sprintf' => array( 'format' => '%2$s', 'params' => array( 'id_subaccount' => false, 'real_name_subaccount' => false, ), ), ), 'sort' => array( 'default' => 'real_name_subaccount', 'reverse' => 'real_name_subaccount DESC', ), ), 'parent_name' => array( 'header' => array( 'value' => $txt['parent_account'], ), 'data' => array( 'sprintf' => array( 'format' => '%2$s', 'params' => array( 'id_parent' => false, 'real_name_parent' => false, ), ), ), 'sort' => array( 'default' => 'real_name_parent', 'reverse' => 'real_name_parent DESC', ), ), 'shared' => array( 'header' => array( 'value' => $txt['shared'], ), 'data' => array( 'function' => create_function('$rowData', ' global $txt; return !empty($rowData[\'is_shareable\']) ? $txt[\'yes\'] : $txt[\'no\']; '), 'style' => 'text-align: center;', ), 'sort' => array( 'default' => 'real_name_parent', 'reverse' => 'real_name_parent DESC', ), ), 'last_active' => array( 'header' => array( 'value' => $txt['viewmembers_online'], ), 'data' => array( 'function' => create_function('$rowData', ' global $txt; // Calculate number of days since last online. if (empty($rowData[\'last_login\'])) $difference = $txt[\'never\']; else { $num_days_difference = jeffsdatediff($rowData[\'last_login\']); // Today. if (empty($num_days_difference)) $difference = $txt[\'viewmembers_today\']; // Yesterday. elseif ($num_days_difference == 1) $difference = sprintf(\'1 %1$s\', $txt[\'viewmembers_day_ago\']); // X days ago. else $difference = sprintf(\'%1$d %2$s\', $num_days_difference, $txt[\'viewmembers_days_ago\']); } return $difference; '), 'style' => 'text-align: center;', ), 'sort' => array( 'default' => 'last_login DESC', 'reverse' => 'last_login', ), ), 'created' => array( 'header' => array( 'value' => $txt['account_created'], ), 'data' => array( 'function' => create_function('$rowData', ' global $txt; // Calculate number of days since last online. if (empty($rowData[\'date_registered\'])) $difference = $txt[\'never\']; else { $num_days_difference = jeffsdatediff($rowData[\'date_registered\']); // Today. if (empty($num_days_difference)) $difference = $txt[\'viewmembers_today\']; // Yesterday. elseif ($num_days_difference == 1) $difference = sprintf(\'1 %1$s\', $txt[\'viewmembers_day_ago\']); // X days ago. else $difference = sprintf(\'%1$d %2$s\', $num_days_difference, $txt[\'viewmembers_days_ago\']); } return $difference; '), 'style' => 'text-align: center;', ), 'sort' => array( 'default' => 'date_registered DESC', 'reverse' => 'date_registered', ), ), 'posts' => array( 'header' => array( 'value' => $txt['member_postcount'], ), 'data' => array( 'db' => 'posts', 'style' => 'text-align: center;', ), 'sort' => array( 'default' => 'posts', 'reverse' => 'posts DESC', ), ), 'check' => array( 'header' => array( 'value' => '', ), 'data' => array( 'function' => create_function('$rowData', ' global $user_info; return \'\'; '), 'class' => 'windowbg', 'style' => 'text-align: center', ), ), ), 'form' => array( 'href' => $scripturl . '?action=admin;area=subaccounts;sa=view', 'include_start' => true, 'include_sort' => true, ), 'additional_rows' => array( array( 'position' => 'below_table_data', 'value' => '', 'class' => 'titlebg', 'style' => 'text-align: right;', ), ), ); // Without not enough permissions, don't show 'delete members' checkboxes. //if (!allowedTo('profile_remove_any')) unset($listOptions['columns']['check'], $listOptions['form'], $listOptions['additional_rows']); require_once($sourcedir . '/Subs-List.php'); createList($listOptions); $context['sub_template'] = 'show_list'; $context['default_list'] = 'member_list'; } function list_getSubaccounts($start, $items_per_page, $sort) { global $smcFunc; $request = $smcFunc['db_query']('', ' SELECT mem.id_member AS id_subaccount, mem2.id_member AS id_parent, mem.real_name AS real_name_subaccount, mem2.real_name AS real_name_parent, mem.last_login, mem.posts, mem.date_registered, mem.is_shareable FROM {db_prefix}subaccounts AS sub LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = sub.id_member) LEFT JOIN {db_prefix}members AS mem2 ON (mem2.id_member = sub.id_parent) ORDER BY {raw:sort} LIMIT {int:start}, {int:per_page}', 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); return $members; } function list_getNumSubaccounts() { global $smcFunc, $modSettings; $request = $smcFunc['db_query']('', ' SELECT COUNT(*) FROM {db_prefix}subaccounts AS sub', array() ); list ($num_members) = $smcFunc['db_fetch_row']($request); $smcFunc['db_free_result']($request); return $num_members; } ]]> array(false, 'profile', 'use_avatar'), ]]> array(true, 'subaccounts', 'subaccounts', 'moderate_general'), 'subaccounts_delete' => array(true, 'subaccounts', 'subaccounts', 'moderate_general'), 'subaccounts_merge' => array(true, 'subaccounts', 'subaccounts', 'moderate_general'), 'subaccounts_split' => array(true, 'subaccounts', 'subaccounts', 'moderate_general'), ]]> array( 'url' => 'action=admin;area=subaccounts', 'settings' => array( 'enableSubAccounts' => 1, ), ), ]]> 1, ) ); ]]> 1, ) ); ]]> $context['subaccount_list'], ) ); while ($row = $smcFunc['db_fetch_assoc']($request)) $context['subaccounts_online'][$row['id_member']] = $settings['images_url'] . '/' . (!empty($row['is_online']) ? 'useron' : 'useroff') . '.gif'; $smcFunc['db_free_result']($request); ]]> $user_info['id'], 'name' => $user_info['name'], ); foreach ($user_info['subaccounts'] as $account) $context['subaccount_list'][$account['id']] = array( 'id' => $account['id'], 'name' => $account['name'], ); $selected = !empty($_POST['subaccount']) && !empty($context['subaccount_list'][$_POST['subaccount']]) ? $_POST['subaccount'] : (!empty($context['id_poster']) && !empty($context['subaccount_list'][$context['id_poster']]) ? $context['id_poster'] : $user_info['id']); $context['subaccount_list'][$selected]['selected'] = true; } ]]> $user_info['id'], 'name' => $_POST['guestname'], ]]> isset($_POST['subaccount']) ? $_POST['subaccount'] : (isset($row['id_member']) ? $row['id_member'] : $user_info['id']), 'name' => isset($_POST['subaccount']) && $_POST['subaccount'] != $user_info['id'] ? $user_info['subaccounts'][$_POST['subaccount']]['name'] : $_POST['guestname'], ]]> '-')); updateMemberData($_POST['subaccount'], array('posts' => '+')); } ]]> 'subaccounts_create', 'can_delete' => 'subaccounts_delete', 'can_merge' => 'subaccounts_merge', 'can_split' => 'subaccounts_split', 'can_reassign' => 'subaccounts_create', ); foreach ($anyown_permissions as $contextual => $perm) $context[$contextual] = allowedTo($perm . '_any') || allowedTo($perm . '_own'); $max_subaccounts = !empty($modSettings['subaccount_max_group_' . $cur_profile['id_group']]) ? $modSettings['subaccount_max_group_' . $cur_profile['id_group']] : 0; $context['can_create'] = $context['can_create'] && (!empty($context['user']['is_admin']) || count($cur_profile['subaccounts']) < $max_subaccounts || $max_subaccounts == 0); $context['can_browse'] = $context['can_create'] || $context['can_delete'] || $context['can_merge'] || $context['can_split']; $sub_actions = array( 'browse' => 'SubAccountBrowse', 'create' => 'SubAccountCreate', 'delete' => 'SubAccountDelete', 'merge' => 'SubAccountMerge', 'split' => 'SubAccountSplit', 'reassign' => 'SubAccountParent', ); // What are we trying to do... $context['area'] = !empty($_REQUEST['sa']) && array_key_exists($_REQUEST['sa'], $sub_actions) ? $_REQUEST['sa'] : 'browse'; // Handle the permission checking here. If they can't do what they want, kick 'em out... if(empty($context['can_' . $context['area']])) fatal_lang_error('cannot_subaccounts_' . $context['area'] . '_own', false); // Now load up our file and call the proper function... require_once($sourcedir . '/SubAccount.php'); $sub_actions[$context['area']]($memID); } ]]> array_merge(array($context['member']['id']), array_keys($context['member']['subaccounts'])), ) ); list($context['member']['subaccounts_posts']) = $smcFunc['db_fetch_row']($request); $smcFunc['db_free_result']($request); if (empty($user_profile[$memID]['date_registered']) || $days_registered < 1) $context['member']['subaccounts_posts_per_day'] = $txt['not_applicable']; else $context['member']['subaccounts_posts_per_day'] = comma_format($context['member']['subaccounts_posts'] / $days_registered, 3); } ]]> true, ]]> empty($cur_profile['id_parent']) ? true : false, ]]> array( ]]> array( 'label' => $txt['managesubaccounts'], 'file' => 'Profile-Modify.php', 'function' => 'manageSubAccounts', 'enabled' => empty($cur_profile['id_parent']) && !empty($modSettings['enableSubAccounts']), 'sc' => 'post', 'permission' => array ( 'own' => array('subaccounts_create_own', 'subaccounts_delete_own', 'subaccounts_merge_own', 'subaccounts_split_own', 'subaccounts_create_any', 'subaccounts_delete_any', 'subaccounts_merge_any', 'subaccounts_split_any'), 'any' => array('subaccounts_create_any', 'subaccounts_delete_any', 'subaccounts_merge_any', 'subaccounts_split_any'), ), ), ]]> $profile_vars['email_address'])); ]]> $scripturl . '?action=profile;u=' . $cur_profile['id_parent'], 'name' => $user_profile[$cur_profile['id_parent']]['real_name'], ); } $context['linktree'][] = array( 'url' => $scripturl . '?action=profile;u=' . $cur_profile['id_member'], 'name' => $cur_profile['real_name'], 'extra_before' => $txt['subaccount'] . ': ', ); } ]]> '\%', '_' => '\_', '*' => '%', '?' => '_')); ]]> $memberlist, ) ); while ($row = $smcFunc['db_fetch_assoc']($request)) { $memberlist[] = $row['id_member']; } } $memberlist = array_unique($memberlist); ]]> $modSettings['settings_updated'] && $_SESSION['mc']['id'] == $user_info['id']) ]]> $modSettings['settings_updated'] && ($_SESSION['mc']['id'] == $user_info['id'] || array_key_exists($_SESSION['mc']['id'], $user_info['subaccounts']))) ]]> $modSettings['last_mod_report_action'] && $_SESSION['rc']['id'] == $user_info['id']) ]]> $modSettings['last_mod_report_action'] && ($_SESSION['rc']['id'] == $user_info['id'] || array_key_exists($_SESSION['rc']['id'], $user_info['subaccounts']))) ]]>
'; } } ]]>
', $txt['use_subaccount'], ': '; } echo ' ]]> '; } ]]> ', $txt['hello_member_ndt'], ' ', $context['user']['name'], ' ]]> ', $txt['hello_member_ndt'], ' ', $context['user']['name'], '', $context['subaccount_dropdown'], ' ]]> ]]> ]]>  ' . $account['name'] . ''; $subaccountString = substr($subaccountString,2); echo '
', $txt['subaccounts'], ': ', $subaccountString, '
'; } ]]>
', $txt['use_subaccount'], ':
'; } ]]>
', $txt['profile_posts'], ':
', $context['member']['posts'], ' (', $context['member']['posts_per_day'], ' ', $txt['posts_per_day'], ')
'; ]]>
', $txt['profile_posts'], ':
', $context['member']['posts'], ' (', $context['member']['posts_per_day'], ' ', $txt['posts_per_day'], ')
'; if (isset($context['member']['subaccounts_posts'])) echo '
', $txt['subaccount_posts'], '
', $context['member']['subaccounts_posts'], ' (', $context['member']['subaccounts_posts_per_day'], ' ', $txt['posts_per_day'], ')
'; } ]]>
', $context['member']['location'], ''; ]]> ', $txt['subaccounts'], ':
\' . $account[\'name\'];'), array_keys($context['member']['subaccounts']), $context['member']['subaccounts'])), '
'; ]]>
', $txt['search_subject_only'], ' ]]> ', $txt['search_subject_only'], ' ]]>
Once enabled, you can set various options, including the maximum number of subaccounts that each membergroup may have and whether or not new subaccounts inherit their parent\'s membergroup. If you wish to set permissions as to which groups have which types of permissions (create, delete, merge, split), visit the Permissions section of your admin panel.'; $txt['enableSubAccounts'] = 'Allow users to have subaccounts'; $txt['maxSubAccounts'] = 'Max number of subaccounts
(0 for unlimited)
'; $txt['subaccountsInheritParentGroup'] = 'New subaccounts inherit parent membergroup'; $txt['subaccountsShowInMemberlist'] = 'SubAccounts show on memberlist'; $txt['subaccountsShowInProfile'] = 'SubAccounts show in user\'s profiles'; $txt['subaccountsEnablePortalBlock'] = 'Show in block for portal system
(Future Feature)
'; $txt['subaccount_no_portal'] = 'No Portal'; $txt['subaccount_configure_groups'] = 'Configure subaccounts per membergroup'; $txt['subaccount_configure_groups_desc'] = 'This section allows you to configure how many subaccounts each membergroup is allowed to have. A user gets the number of subaccounts defined by their primary membergroup only. 0 for unlimited.'; $txt['subaccount_group_settings'] = 'Configure subaccounts per membergroup'; // Modlog $txt['modlog_ac_delete_subaccount'] = 'Deleted subaccount "{name}" from "{parent}"'; $txt['modlog_ac_merge_subaccount'] = 'Merged subaccount "{name}" into "{parent}"'; // These take care of the profile stuff // First the buttons $txt['button_create'] = 'Create / Link'; $txt['button_merge'] = 'Merge'; $txt['button_split'] = 'Unlink'; $txt['button_parent'] = 'Set as parent'; $txt['button_share'] = 'Make (un)shareable'; $txt['managesubaccounts'] = 'Manage SubAccounts'; $txt['subaccount'] = 'SubAccount'; $txt['parent_account'] = 'Parent Account'; $txt['account_created'] = 'Account Created'; $txt['shared'] = 'Shared'; $txt['subaccounts'] = 'SubAccounts'; $txt['modifysubaccounts_desc'] = 'This is where you can manage your subaccounts. Depending on what your administrator has allowed, you can create and delete subaccounts, and also merge subaccounts together, turn regular accounts into subaccounts (if you can supply the correct password) and unlink subaccounts to make regular accounts.

Deleting a subaccount will transfer all of its posts, polls, topics, moderation actions, bans, and errors to the parent user.
Merging subaccounts will transfer everything from the mergee(\'s) to the merger'; $txt['subaccounts_merge_desc'] = 'Choose the account that you would like to merge the subaccount "%s" into.'; $txt['create_subaccount_desc'] = 'Please enter the name you wish to use as the subaccount. If you want to turn an existing account into a subaccount, please enter that account\'s password. You can click the small \'warning\' icon next to the text field to validate the name if you are creating a new subaccount.'; $txt['subaccount_create_pass'] = 'If the subaccount is already a user or shared subaccount, supply that account\'s password.'; $txt['subaccount_create_pass_admin'] = 'Your current password is required if creating a new subaccount. If linking a subaccount, please enter it\'s existing password.'; $txt['subaccounts_split_desc'] = 'Please enter a valid email address and new password for each subaccount you wish to unlink.'; $txt['subaccounts_reassign_desc'] = 'Please enter a password to use with your new parent account.'; $txt['current_subaccounts'] = 'Current SubAccounts'; $txt['current_subaccounts_none'] = 'There are no subaccounts linked to this account.'; $txt['change_subaccount'] = 'Switch Account'; $txt['choose_subaccount'] = 'Choose Account'; $txt['use_subaccount'] = 'Use account'; $txt['identification_by_smf'] = 'Used to identify you on the forum.'; $txt['subaccount_create_success'] = 'You have successfully created a new subaccount.'; $txt['subaccount_delete_success'] = 'You have successfully deleted the subaccount(es)'; $txt['subaccount_merge_success'] = 'You have successfully merged the subaccounts'; $txt['deleteAccount_subaccount'] = 'Delete this subaccount?'; $txt['deleteAccount_subaccount_sure'] = 'Are you 100% sure?\nThis action CANNOT be reversed or recovered.'; $txt['no_subaccount_login'] = 'You cannot login with a subaccount. Only the parent account may be used to login.'; $txt['cannot_delete_subaccount'] = 'You cannot delete this subaccount.'; $txt['cannot_delete_subaccount_shared'] = 'You cannot delete a shared subaccount that you did not create.'; $txt['subaccount_error'] = 'The following error(s) occured'; $txt['subaccount_not_selected'] = 'No valid subaccounts selected'; $txt['subaccount_cannot_create'] = 'Cannot create a subaccount with that name'; $txt['cannot_merge_subaccounts_of_subaccounts'] = 'SubAccounts cannot have subaccounts, thus you shouldn\'t be trying to merge a subaccount of a subaccount.'; $txt['registration_username_available'] = 'Username is available'; $txt['registration_username_unavailable'] = 'Username may not be available'; $txt['registration_username_check'] = 'Check if username is available'; $txt['registration_password_short'] = 'Password is too short'; $txt['registration_password_reserved'] = 'Password contains your username/email'; $txt['registration_password_numbercase'] = 'Password must contain both upper and lower case, and numbers'; $txt['registration_password_no_match'] = 'Passwords do not match'; $txt['registration_password_valid'] = 'Password is valid'; $txt['subaccount_too_many_selected'] = 'Silly rabbit, tricks are for kids. You can only have one parent in this life'; $txt['subaccount_posts'] = 'All Posts:(Including SubAccounts)'; $txt['search_subaccount_users'] = 'Search all subaccounts of the above user'; /**** End of SubAccount Mod ****/ ]]>