Example #1
0
 function user_import()
 {
     $this->userDB = new db();
     // Have our own database object to write to the user table
     $this->actualExtended = e107::getUserExt()->getFieldNames();
     // Create list of predefined extended user fields which are present
 }
Example #2
0
 function toolsPageProcess()
 {
     $mes = e107::getMessage();
     $fList = array();
     if (isset($_POST['tools'])) {
         $msg = '';
         if (isset($_POST['forum_all'])) {
             $fList[] = 'all';
         } else {
             foreach (array_keys($_POST['forumlist']) as $k) {
                 $fList[] = $k;
             }
         }
         foreach ($fList as $fid) {
             if (isset($_POST['counts'])) {
                 $this->forumObj->forumUpdateCounts($fid, $_POST['counts_threads']);
                 $msg .= FORLAN_167 . ": {$fid} <br />";
             }
             if (isset($_POST['lastpost'])) {
                 $with_threads = !empty($_POST['lastpost_nothread']) ? FALSE : TRUE;
                 $this->forumObj->forumUpdateLastpost('forum', $fid, $with_threads);
                 $msg .= FORLAN_168 . ": {$fid} <br />";
             }
         }
         if (isset($_POST['userpostcounts'])) {
             $ue = e107::getUserExt();
             $list = $this->forumObj->getUserCounts();
             foreach ($list as $uid => $cnt) {
                 $ue->user_extended_setvalue($uid, 'user_plugin_forum_posts', $cnt, 'int');
             }
             $msg .= FORLAN_169 . ' <br />';
         }
         $mes->addSuccess($msg);
         //	$ns->tablerender($caption, $mes->render().$text);
     }
 }
Example #3
0
 /**
  * Creates a 'select' dropdown of non-system user fields
  * 
  * @param string $list_name - name for <select>
  * @param string $curval - current select value
  * @param boolean $add_blank - add a blank line before the options if TRUE
  * @return text for display
  */
 public function ret_extended_field_list($list_name, $curval = '', $add_blank = FALSE)
 {
     $ue = e107::getUserExt();
     // Get the extended field handler
     $ret = "<select name='{$list_name}' class='tbox'>\n";
     if ($add_blank) {
         $ret .= "<option value=''>&nbsp;</option>\n";
     }
     foreach ($ue->fieldDefinitions as $fd) {
         if ($fd['user_extended_struct_text'] != '_system_') {
             $value = 'ue.user_' . $fd['user_extended_struct_name'];
             $selected = $value == $curval ? " selected='selected'" : '';
             $ret .= "<option value='" . $value . "' {$selected}>" . ucfirst($fd['user_extended_struct_name']) . "</option>\n";
         }
     }
     $ret .= "</select>\n";
     return $ret;
 }
Example #4
0
function step3()
{
    $ns = e107::getRender();
    $mes = e107::getMessage();
    $stepCaption = 'Step 3: Extended user field creation';
    if (!isset($_POST['create_extended'])) {
        $text = "\n\t\tThis step will create the new extended user fields required for the new forum code: <br />\n\t\t<ul>\n\t\t<li>user_plugin_forum_posts (to track number of posts for each user)</li>\n\t\t<li>user_plugin_forum_viewed (to track threads viewed by each user</li>\n\t\t</ul>\n\t\t<br /><br />\n\t\t<form method='post'>\n\t\t<input class='btn btn-success' data-loading-text='Please wait...' type='submit' name='create_extended' value='Proceed with field creation' />\n\t\t</form>\n\t\t";
        $ns->tablerender($stepCaption, $text);
        return;
    }
    $fieldList = array('plugin_forum_posts' => 'integer', 'plugin_forum_viewed' => 'radio');
    $failed = false;
    $ext = e107::getUserExt();
    foreach ($fieldList as $fieldName => $fieldType) {
        $result = $ext->user_extended_add_system($fieldName, $fieldType);
        if ($result === true) {
            $mes->addSuccess('Creating extended user field user_' . $fieldName);
        } else {
            $mes->addError('Creating extended user field user_' . $fieldName);
            $mes->addDebug(print_a($result, true));
            $failed = true;
        }
    }
    if ($failed) {
        $mes->addError("Creation of extended field(s) failed.  You can not continue until these are create successfully!");
    } else {
        $text = "\n\t\t\t<form method='post' action='" . e_SELF . "?step=4'>\n\t\t\t<input class='btn btn-success' type='submit' name='nextStep[4]' value='Proceed to step 4' />\n\t\t\t</form>\n\t\t\t";
    }
    $ns->tablerender($stepCaption, $mes->render() . $text);
}
Example #5
0
/**
 * @param $parm
 * @usage {USER_EXTENDED=<field_name>.[text|value|icon|text_value].<user_id>}
 * @example {USER_EXTENDED=user_gender.value.5}  will show the value of the extended field user_gender for user #5
 * @return bool|string
 */
function user_extended_shortcode($parm)
{
    $currentUser = e107::user();
    $tp = e107::getParser();
    global $loop_uid, $e107, $sc_style;
    //	include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/lan_user_extended.php');
    $parms = explode('.', $parm);
    if (isset($loop_uid) && intval($loop_uid) == 0) {
        return '';
    }
    $key = $parms[0] . "." . $parms[1];
    $sc_style['USER_EXTENDED']['pre'] = isset($sc_style['USER_EXTENDED'][$key]['pre']) ? $sc_style['USER_EXTENDED'][$key]['pre'] : '';
    $sc_style['USER_EXTENDED']['post'] = isset($sc_style['USER_EXTENDED'][$key]['post']) ? $sc_style['USER_EXTENDED'][$key]['post'] : '';
    //include_once(e_HANDLER.'user_extended_class.php');
    $ueStruct = e107::getUserExt()->user_extended_getStruct();
    //	$ueStruct = e107_user_extended::user_extended_getStruct();
    $uid = intval(varset($parms[2], 0));
    if ($uid == 0) {
        if (isset($loop_uid) && intval($loop_uid) > 0) {
            $uid = $loop_uid;
        } else {
            $uid = USERID;
        }
    }
    $udata = e107::user($uid);
    $udata['user_class'] .= $udata['user_class'] == '' ? '' : ',';
    $udata['user_class'] .= e_UC_PUBLIC . "," . e_UC_MEMBER;
    if (!empty($udata['user_admin'])) {
        $udata['user_class'] .= ',' . e_UC_ADMIN;
    }
    // Need to pick up the 'miscellaneous' category - anything which isn't in a named category. Have to control visibility on a field by field basis
    // And I don't think this should apply to icons
    /**
     *	@todo - must be a better way of picking up the 'Miscellaneous' category
     */
    include_lan(e_LANGUAGEDIR . e_LANGUAGE . '/lan_user.php');
    if ($parms[1] != 'icon' && $parms[0] != LAN_USER_44) {
        $fkeyApplic = varset($ueStruct["user_" . $parms[0]]['user_extended_struct_applicable']);
        $fkeyRead = varset($ueStruct["user_" . $parms[0]]['user_extended_struct_read']);
        $fkeyStruct = varset($ueStruct["user_" . $parms[0]]['user_extended_struct_parms']);
        $ret_cause = 0;
        if (!check_class($fkeyApplic, $udata['user_class'])) {
            $ret_cause = 1;
        }
        if (!check_class($fkeyRead, $udata['user_class'])) {
            $ret_cause = 2;
        }
        if ($ueStruct["user_" . $parms[0]]['user_extended_struct_read'] == e_UC_READONLY && (!ADMIN && $udata['user_id'] != USERID)) {
            $ret_cause = 3;
        }
        if (!ADMIN && substr($fkeyStruct, -1) == 1 && strpos($udata['user_hidden_fields'], "^user_" . $parms[0] . "^") !== FALSE && $uid != USERID) {
            $ret_cause = 4;
        }
        if ($ret_cause != 0) {
            return FALSE;
        }
    }
    if ($parms[1] == 'text_value') {
        //	$_value = $tp->parseTemplate("{USER_EXTENDED={$parms[0]}.value}");
        $_value = user_extended_shortcode($parms[0] . ".value");
        if ($_value) {
            $__pre = isset($sc_style['USER_EXTENDED'][$key]['pre']) ? $sc_style['USER_EXTENDED'][$key]['pre'] : '';
            $__post = isset($sc_style['USER_EXTENDED'][$key]['post']) ? $sc_style['USER_EXTENDED'][$key]['post'] : '';
            //		$_text = $tp->parseTemplate("{USER_EXTENDED={$parms[0]}.text}");
            $_text = user_extended_shortcode($parms[0], ".text");
            $_mid = isset($sc_style['USER_EXTENDED'][$key]['mid']) ? $sc_style['USER_EXTENDED'][$key]['mid'] : '';
            return $__pre . $_text . $_mid . $_value . $__post;
        }
        return false;
    }
    if ($parms[1] == 'text') {
        $text_val = $ueStruct['user_' . $parms[0]]['user_extended_struct_text'];
        if ($text_val) {
            return defined($text_val) ? constant($text_val) : $text_val;
        } else {
            return FALSE;
        }
    }
    if ($parms[1] == 'icon') {
        if (defined(strtoupper($parms[0]) . '_ICON')) {
            return constant(strtoupper($parms[0]) . '_ICON');
        } elseif (is_readable(e_IMAGE . "user_icons/user_{$parms[0]}.png")) {
            return "<img src='" . e_IMAGE_ABS . "user_icons/user_{$parms[0]}.png' style='width:16px; height:16px' alt='' />";
        } elseif (is_readable(e_IMAGE . "user_icons/{$parms[0]}.png")) {
            return "<img src='" . e_IMAGE_ABS . "user_icons/{$parms[0]}.png' style='width:16px; height:16px' alt='' />";
        }
        //return '';
        return FALSE;
    }
    if ($parms[1] == 'value') {
        $uVal = str_replace(chr(1), '', $udata['user_' . $parms[0]]);
        switch ($ueStruct["user_" . $parms[0]]['user_extended_struct_type']) {
            case EUF_DB_FIELD:
                // check for db_lookup type
                $tmp = explode(',', $ueStruct['user_' . $parms[0]]['user_extended_struct_values']);
                $sql_ue = new db();
                // Use our own DB object to avoid conflicts
                if ($sql_ue->select($tmp[0], "{$tmp[1]}, {$tmp[2]}", "{$tmp[1]} = '{$uVal}'")) {
                    $row = $sql_ue->fetch();
                    $ret_data = $row[$tmp[2]];
                } else {
                    $ret_data = FALSE;
                }
                break;
            case EUF_DATE:
                //check for 0000-00-00 in date field
                if ($uVal == '0000-00-00') {
                    $uVal = '';
                }
                $ret_data = $uVal;
                break;
            case EUF_PREDEFINED:
                // Predefined field - have to look up display string in relevant file
                $ret_data = e107::getUserExt()->user_extended_display_text($ueStruct['user_' . $parms[0]]['user_extended_struct_values'], $uVal);
                break;
            default:
                $ret_data = $uVal;
        }
        if ($ret_data != '') {
            return $tp->toHTML($ret_data, TRUE, 'no_make_clickable', "class:{$udata['user_class']}");
        }
        return FALSE;
    }
    // return TRUE;
    return FALSE;
}
Example #6
0
 function showExtendedList()
 {
     global $curtype, $mySQLdefaultdb, $action, $sub_action;
     $ue = e107::getUserExt();
     $frm = e107::getForm();
     $ns = e107::getRender();
     $sql = e107::getDb();
     $tp = e107::getParser();
     $extendedList = $ue->user_extended_get_fields();
     $emessage = e107::getMessage();
     $text = $emessage->render();
     $mode = 'show';
     $text .= "\n\n\t\t\t   <form method='post' action='" . e_SELF . "' >\n\t\t\t   <table class='table adminlist'>\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t<th>" . EXTLAN_1 . "</th>\n                <th>" . EXTLAN_79 . "</th>\n\n\t\t\t\t<th>" . EXTLAN_2 . "</th>\n\t\t\t\t<th>" . EXTLAN_44 . "</th>\n\t\t\t\t<th>" . EXTLAN_4 . "</th>\n\n\t\t\t\t<th>" . EXTLAN_5 . "</th>\n\t\t\t\t<th>" . EXTLAN_6 . "</th>\n\t\t\t\t<th>" . EXTLAN_7 . "</th>\n\t\t\t\t<th class='center last' colspan='2'>" . EXTLAN_8 . "</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t";
     foreach ($this->catNums as $cn) {
         $i = 0;
         $category_name = $this->catList[$cn][0]['user_extended_struct_name'];
         if (vartrue($extendedList[$cn])) {
             foreach ($extendedList[$cn] as $ext) {
                 $name = $ext['user_extended_struct_name'];
                 $fname = "user_" . $name;
                 $id = $ext['user_extended_struct_id'];
                 $uVal = str_replace(chr(1), "", $ext['user_extended_struct_default']);
                 // Is this right?
                 $text .= "\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td>{$ext['user_extended_struct_name']}</td>\n\t\t\t\t\t\t\t<td>" . $tp->toHTML(deftrue($ext['user_extended_struct_text'], $ext['user_extended_struct_text']), FALSE, "defs") . "</td>\n\t\t\t\t\t\t\t<td class='left'>" . $ue->user_extended_edit($ext, $uVal) . "</td>\n\t\t\t\t\t\t\t<td class='left'>" . $category_name . "</td>\n\t\t\t\t\t\t\t<td>" . ($ext['user_extended_struct_required'] == 1 ? LAN_YES : LAN_NO) . "</td>\n\t\t\t\t\t\t\t<td>" . r_userclass_name($ext['user_extended_struct_applicable']) . "</td>\n\t\t\t\t\t\t\t<td>" . r_userclass_name($ext['user_extended_struct_read']) . "</td>\n\t\t\t\t\t\t\t<td>" . r_userclass_name($ext['user_extended_struct_write']) . "</td>\n\t\t\t\t\t\t\t<td>";
                 if ($i > 0) {
                     $text .= "<input type='image' alt='' title='" . EXTLAN_26 . "' src='" . ADMIN_UP_ICON_PATH . "' name='up[{$id}]' value='{$ext['user_extended_struct_id']}.{$ext['user_extended_struct_order']}.{$ext['user_extended_struct_parent']}' />";
                 }
                 if ($i <= count($extendedList[$cn]) - 2) {
                     $text .= "<input type='image' alt='' title='" . EXTLAN_25 . "' src='" . ADMIN_DOWN_ICON_PATH . "' name='down[{$id}]' value='{$ext['user_extended_struct_id']}.{$ext['user_extended_struct_order']}.{$ext['user_extended_struct_parent']}' />";
                 }
                 $text .= "\n\t\t\t\t\t\t  \t</td>\n\t\t\t\t\t\t\t<td class='center' style='width:10%;white-space:nowrap'>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<a class='btn btn-default' style='text-decoration:none' href='" . e_SELF . "?editext." . $id . "'>" . ADMIN_EDIT_ICON . "</a>\n\t\t\t\t\t\t\t" . $frm->submit_image('eudel[' . $name . ']', $id, 'delete', LAN_DELETE . ' [ ID: ' . $id . ' ]', array('class' => 'action delete btn btn-default' . $delcls));
                 // ."<input class='btn btn-large' type='image' title='".LAN_DELETE."' name='eudel[".$name."]' src='".ADMIN_DELETE_ICON_PATH."' value='".$id."' onclick='return confirm(\"".EXTLAN_27."\")' />
                 $text .= "</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t";
                 $i++;
             }
         } elseif ($cn == 0) {
             $text .= "\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='10' class='center'>" . EXTLAN_28 . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t";
         }
     }
     //Show add/edit form
     $text .= "</tbody>\n\t\t\t</table></form>";
     $ns->tablerender(EXTLAN_9, $text);
 }
Example #7
0
 function user_extended($curval, $mode, $att)
 {
     if ($mode == 'read') {
         $field = $att['field'];
         $data = $this->getController()->getListModel()->get($field);
         // ($att['field']);
         return $data;
     }
     if ($mode == 'write') {
         // e107::getUserExt()->user_extended_edit
         //	return 'hello';
         $field = $att['field'];
         $extData = $this->getController()->getExtended();
         $extData[$field]['user_extended_struct_required'] = 0;
         return e107::getUserExt()->user_extended_edit($extData[$field], $curval);
         //	return print_a($att,true);
     }
 }
Example #8
0
 public function __construct($method, &$username, &$userpass)
 {
     $this->e107 = e107::getInstance();
     $newvals = array();
     if ($method == 'none') {
         $this->loginResult = AUTH_NOCONNECT;
         return;
     }
     require_once e_PLUGIN . 'alt_auth/' . $method . '_auth.php';
     $_login = new auth_login();
     if (isset($_login->Available) && $_login->Available === FALSE) {
         // Relevant auth method not available (e.g. PHP extension not loaded)
         $this->loginResult = AUTH_NOT_AVAILABLE;
         return;
     }
     $login_result = $_login->login($username, $userpass, $newvals, FALSE);
     if ($login_result === AUTH_SUCCESS) {
         require_once e_HANDLER . 'user_handler.php';
         require_once e_HANDLER . 'validator_class.php';
         if (MAGIC_QUOTES_GPC == FALSE) {
             $username = mysql_real_escape_string($username);
         }
         $username = preg_replace("/\\sOR\\s|\\=|\\#/", "", $username);
         $username = substr($username, 0, e107::getPref('loginname_maxlength'));
         $aa_sql = e107::getDb('aa');
         $userMethods = new UserHandler();
         $db_vals = array('user_password' => $aa_sql->escape($userMethods->HashPassword($userpass, $username)));
         $xFields = array();
         // Possible extended user fields
         // See if any of the fields need processing before save
         if (isset($_login->copyMethods) && count($_login->copyMethods)) {
             foreach ($newvals as $k => $v) {
                 if (isset($_login->copyMethods[$k])) {
                     $newvals[$k] = $this->translate($_login->copyMethods[$k], $v);
                     if (AA_DEBUG1) {
                         $this->e107->admin_log->e_log_event(10, debug_backtrace(), "DEBUG", "Alt auth convert", $k . ': ' . $v . '=>' . $newvals[$k], FALSE, LOG_TO_ROLLING);
                     }
                 }
             }
         }
         foreach ($newvals as $k => $v) {
             if (strpos($k, 'x_') === 0) {
                 // Extended field
                 $k = substr($k, 2);
                 $xFields['user_' . $k] = $v;
             } else {
                 // Normal user table
                 if (strpos($k, 'user_' !== 0)) {
                     $k = 'user_' . $k;
                 }
                 // translate the field names (but latest handlers don't need translation)
                 $db_vals[$k] = $v;
             }
         }
         $ulogin = new userlogin();
         if (count($xFields)) {
             // We're going to have to do something with extended fields as well - make sure there's an object
             require_once e_HANDLER . 'user_extended_class.php';
             $ue = new e107_user_extended();
             $q = $qry = "SELECT u.user_id,u." . implode(',u.', array_keys($db_vals)) . ", ue.user_extended_id, ue." . implode(',ue.', array_keys($xFields)) . " FROM `#user` AS u\r\n\t\t\t\t\t\tLEFT JOIN `#user_extended` AS ue ON ue.user_extended_id = u.user_id\r\n\t\t\t\t\t\tWHERE " . $ulogin->getLookupQuery($username, FALSE, 'u.');
             if (AA_DEBUG) {
                 $this->e107->admin_log->e_log_event(10, debug_backtrace(), "DEBUG", "Alt auth login", "Query: {$qry}[!br!]" . print_r($xFields, TRUE), FALSE, LOG_TO_ROLLING);
             }
         } else {
             $qry = "SELECT * FROM `#user` WHERE " . $ulogin->getLookupQuery($username, FALSE);
         }
         if ($aa_sql->db_Select_gen($qry)) {
             // Existing user - get current data, see if any changes
             $row = $aa_sql->db_Fetch(MYSQL_ASSOC);
             foreach ($db_vals as $k => $v) {
                 if ($row[$k] == $v) {
                     unset($db_vals[$k]);
                 }
             }
             if (count($db_vals)) {
                 $newUser = array();
                 $newUser['data'] = $db_vals;
                 validatorClass::addFieldTypes($userMethods->userVettingInfo, $newUser);
                 $newUser['WHERE'] = '`user_id`=' . $row['user_id'];
                 $aa_sql->db_Update('user', $newUser);
                 if (AA_DEBUG1) {
                     $this->e107->admin_log->e_log_event(10, debug_backtrace(), "DEBUG", "Alt auth login", "User data update: " . print_r($newUser, TRUE), FALSE, LOG_TO_ROLLING);
                 }
             }
             foreach ($xFields as $k => $v) {
                 if ($row[$k] == $v) {
                     unset($xFields[$k]);
                 }
             }
             if (AA_DEBUG1) {
                 $this->e107->admin_log->e_log_event(10, debug_backtrace(), "DEBUG", "Alt auth login", "User data read: " . print_r($row, TRUE) . "[!br!]" . print_r($xFields, TRUE), FALSE, LOG_TO_ROLLING);
             }
             if (AA_DEBUG) {
                 $this->e107->admin_log->e_log_event(10, debug_backtrace(), "DEBUG", "Alt auth login", "User xtnd read: " . print_r($xFields, TRUE), FALSE, LOG_TO_ROLLING);
             }
             if (count($xFields)) {
                 $xArray = array();
                 $xArray['data'] = $xFields;
                 if ($row['user_extended_id']) {
                     $ue->addFieldTypes($xArray);
                     // Add in the data types for storage
                     $xArray['WHERE'] = '`user_extended_id`=' . intval($row['user_id']);
                     if (AA_DEBUG) {
                         $this->e107->admin_log->e_log_event(10, debug_backtrace(), "DEBUG", "Alt auth login", "User xtnd update: " . print_r($xFields, TRUE), FALSE, LOG_TO_ROLLING);
                     }
                     $aa_sql->db_Update('user_extended', $xArray);
                 } else {
                     // Never been an extended user fields record for this user
                     $xArray['data']['user_extended_id'] = $row['user_id'];
                     $ue->addDefaultFields($xArray);
                     // Add in the data types for storage, plus any default values
                     if (AA_DEBUG) {
                         $this->e107->admin_log->e_log_event(10, debug_backtrace(), "DEBUG", "Alt auth login", "Write new extended record" . print_r($xFields, TRUE), FALSE, LOG_TO_ROLLING);
                     }
                     $aa_sql->db_Insert('user_extended', $xArray);
                 }
             }
         } else {
             // Just add a new user
             if (AA_DEBUG) {
                 $this->e107->admin_log->e_log_event(10, debug_backtrace(), "DEBUG", "Alt auth login", "Add new user: "******"[!br!]" . print_r($xFields, TRUE), FALSE, LOG_TO_ROLLING);
             }
             if (!isset($db_vals['user_name'])) {
                 $db_vals['user_name'] = $username;
             }
             if (!isset($db_vals['user_loginname'])) {
                 $db_vals['user_loginname'] = $username;
             }
             if (!isset($db_vals['user_join'])) {
                 $db_vals['user_join'] = time();
             }
             $db_vals['user_class'] = e107::getPref('initial_user_classes');
             if (!isset($db_vals['user_signature'])) {
                 $db_vals['user_signature'] = '';
             }
             if (!isset($db_vals['user_prefs'])) {
                 $db_vals['user_prefs'] = '';
             }
             if (!isset($db_vals['user_perms'])) {
                 $db_vals['user_perms'] = '';
             }
             $userMethods->userClassUpdate($db_vals, 'userall');
             $newUser = array();
             $newUser['data'] = $db_vals;
             $userMethods->addNonDefaulted($newUser);
             validatorClass::addFieldTypes($userMethods->userVettingInfo, $newUser);
             $newID = $aa_sql->insert('user', $newUser);
             if ($newID !== FALSE) {
                 if (count($xFields)) {
                     $xFields['user_extended_id'] = $newID;
                     $xArray = array();
                     $xArray['data'] = $xFields;
                     e107::getUserExt()->addDefaultFields($xArray);
                     // Add in the data types for storage, plus any default values
                     $result = $aa_sql->insert('user_extended', $xArray);
                     if (AA_DEBUG) {
                         e107::getLog()->e_log_event(10, debug_backtrace(), 'DEBUG', 'Alt auth login', "Add extended: UID={$newID}  result={$result}", FALSE, LOG_TO_ROLLING);
                     }
                 }
             } else {
                 // Error adding user to database - possibly a conflict on unique fields
                 $this->e107->admin_log->e_log_event(10, __FILE__ . '|' . __FUNCTION__ . '@' . __LINE__, 'ALT_AUTH', 'Alt auth login', 'Add user fail: DB Error ' . $aa_sql->getLastErrorText() . "[!br!]" . print_r($db_vals, TRUE), FALSE, LOG_TO_ROLLING);
                 $this->loginResult = LOGIN_DB_ERROR;
                 return;
             }
         }
         $this->loginResult = LOGIN_CONTINUE;
         return;
     } else {
         // Failure modes
         switch ($login_result) {
             case AUTH_NOCONNECT:
                 if (varset(e107::getPref('auth_noconn'), TRUE)) {
                     $this->loginResult = LOGIN_TRY_OTHER;
                     return;
                 }
                 $username = md5('xx_noconn_xx');
                 $this->loginResult = LOGIN_ABORT;
                 return;
             case AUTH_BADPASSWORD:
                 if (varset(e107::getPref('auth_badpassword'), TRUE)) {
                     $this->loginResult = LOGIN_TRY_OTHER;
                     return;
                 }
                 $userpass = md5('xx_badpassword_xx');
                 $this->loginResult = LOGIN_ABORT;
                 // Not going to magically be able to log in!
                 return;
         }
     }
     $this->loginResult = LOGIN_ABORT;
     // catch-all just in case
     return;
 }