* 2006-08-28 File created.
*/
-// This page cannot be called directly
-if (!isset($CFG)) exit;
+if (!defined('MOODLE_INTERNAL')) {
+ die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
+}
/**
* External database authentication plugin.
*/
function auth_plugin_db() {
$this->config = get_config('auth/db');
+ if (empty($this->config->extencoding)) {
+ $this->config->extencoding = 'utf-8';
+ }
}
/**
* Returns true if the username and password work and false if they are
* wrong or don't exist.
*
- * @param string $username The username
- * @param string $password The password
- * @returns bool Authentication success or failure.
+ * @param string $username The username (with system magic quotes)
+ * @param string $password The password (with system magic quotes)
+ *
+ * @return bool Authentication success or failure.
*/
function user_login ($username, $password) {
global $CFG;
+ $textlib = textlib_get_instance();
+ $extusername = $textlib->convert(stripslashes($username), 'utf-8', $this->config->extencoding);
+ $extpassword = $textlib->convert(stripslashes($password), 'utf-8', $this->config->extencoding);
+
// Connect to the external database (forcing new connection)
- $authdb = &ADONewConnection($this->config->type);
- $authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
+ $authdb = &ADONewConnection($this->config->type);
+ if (!empty($this->config->debugauthdb)) {
+ $authdb->debug = true;
+ ob_start();//start output buffer to allow later use of the page headers
+ }
+ $authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
$authdb->SetFetchMode(ADODB_FETCH_ASSOC);
+ if (!empty($this->config->setupsql)) {
+ $authdb->Execute($this->config->setupsql);
+ }
- if ($this->config->passtype === 'internal') {
+ if ($this->config->passtype === 'internal') {
// lookup username externally, but resolve
// password locally -- to support backend that
// don't track passwords
- $rs = $authdb->Execute("SELECT * FROM {$this->config->table}
- WHERE {$this->config->fielduser} = '$username' ");
+ $rs = $authdb->Execute("SELECT * FROM {$this->config->table}
+ WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."' ");
$authdb->Close();
if (!$rs) {
print_error('auth_dbcantconnect','auth');
return false;
}
-
+
if ( $rs->RecordCount() ) {
// user exists exterally
// check username/password internally
} else {
// user does not exist externally
return false;
- }
+ }
- } else {
+ } else {
// normal case: use external db for passwords
if ($this->config->passtype === 'md5') { // Re-format password accordingly
- $password = md5($password);
+ $extpassword = md5($extpassword);
+ } else if ($this->config->passtype === 'sha1') {
+ $extpassword = sha1($extpassword);
}
- $rs = $authdb->Execute("SELECT * FROM {$this->config->table}
- WHERE {$this->config->fielduser} = '$username'
- AND {$this->config->fieldpass} = '$password' ");
+ $rs = $authdb->Execute("SELECT * FROM {$this->config->table}
+ WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."'
+ AND {$this->config->fieldpass} = '".$this->ext_addslashes($extpassword)."' ");
$authdb->Close();
-
+
if (!$rs) {
print_error('auth_dbcantconnect','auth');
return false;
}
-
+
if ( $rs->RecordCount() ) {
return true;
} else {
return false;
- }
-
+ }
+
}
}
/**
* Reads any other information for a user from external database,
* then returns it in an array
+ *
+ * @param string $username (with system magic quotes)
*/
function get_userinfo($username) {
global $CFG;
+ $textlib = textlib_get_instance();
+ $extusername = $textlib->convert(stripslashes($username), 'utf-8', $this->config->extencoding);
+
// Connect to the external database (forcing new connection)
$authdb = &ADONewConnection($this->config->type);
- $authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
+ if (!empty($this->config->debugauthdb)) {
+ $authdb->debug = true;
+ ob_start();//start output buffer to allow later use of the page headers
+ }
+ $authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
$authdb->SetFetchMode(ADODB_FETCH_ASSOC);
+ if (!empty($this->config->setupsql)) {
+ $authdb->Execute($this->config->setupsql);
+ }
- $fields = array("firstname", "lastname", "email", "phone1", "phone2",
- "department", "address", "city", "country", "description",
+ $fields = array("firstname", "lastname", "email", "phone1", "phone2",
+ "department", "address", "city", "country", "description",
"idnumber", "lang");
$select = 'SELECT ' . substr($select,1);
$sql = $select .
" FROM {$this->config->table}" .
- " WHERE {$this->config->fielduser} = '$username'";
+ " WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."'";
if ($rs = $authdb->Execute($sql)) {
if ( $rs->RecordCount() == 1 ) {
$fields_obj = rs_fetch_record($rs);
foreach ($selectfields as $localname=>$externalname) {
- if (empty($CFG->unicodedb)) {
- $fields_obj->{$localname} = utf8_decode($fields_obj->{$localname});
- }
- $result[$localname] = addslashes(stripslashes($fields_obj->{$localname}));
+ $result[$localname] = $textlib->convert($fields_obj->{$localname}, $this->config->extencoding, 'utf-8');
}
}
rs_close($rs);
}
}
$authdb->Close();
-
return $result;
}
*
* @param object $user The user to update
* @param string $newpassword The new password
+ *
* @return bool True on success
*/
function user_update_password($user, $newpassword) {
global $CFG;
if ($this->config->passtype === 'internal') {
- return set_field('user', 'password', md5($newpassword), 'id', $user->id, 'mnethostid', $CFG->mnet_localhost_id);
+ update_internal_user_password($user, $newpassword, true);
} else {
// we should have never been called!
return false;
* Sync shouid be done by using idnumber attribute, not username.
* You need to pass firstsync parameter to function to fill in
* idnumbers if they dont exists in moodle user table.
- *
+ *
* Syncing users removes (disables) users that dont exists anymore in external db.
- * Creates new users and updates coursecreator status of users.
- *
+ * Creates new users and updates coursecreator status of users.
+ *
* @param bool $do_updates Optional: set to true to force an update of existing accounts
*
* This implementation is simpler but less scalable than the one found in the LDAP module.
*
*/
- function sync_users ($do_updates=0) {
-
+ function sync_users ($do_updates=false) {
+
global $CFG;
$pcfg = get_config('auth/db');
/// list external users
///
$userlist = $this->get_userlist();
- $quoteduserlist = implode("', '", $userlist);
+ $quoteduserlist = implode("', '", addslashes_recursive($userlist));
$quoteduserlist = "'$quoteduserlist'";
///
/// delete obsolete internal users
///
-
+
// find obsolete users
if (count($userlist)) {
- $sql = 'SELECT u.id, u.username
- FROM ' . $CFG->prefix .'user u
+ $sql = 'SELECT u.id, u.username
+ FROM ' . $CFG->prefix .'user u
WHERE u.auth=\'db\' AND u.deleted=\'0\' AND u.username NOT IN (' . $quoteduserlist . ')';
} else {
- $sql = 'SELECT u.id, u.username
- FROM ' . $CFG->prefix .'user u
+ $sql = 'SELECT u.id, u.username
+ FROM ' . $CFG->prefix .'user u
WHERE u.auth=\'db\' AND u.deleted=\'0\' ';
}
- $remove_users = get_records_sql($sql);
+ $remove_users = get_records_sql($sql);
if (!empty($remove_users)) {
print_string('auth_dbuserstoremove','auth', count($remove_users));
foreach ($remove_users as $user) {
//following is copy pasted from admin/user.php
//maybe this should moved to function in lib/datalib.php
- $updateuser = new stdClass();
+ $updateuser = new object();
$updateuser->id = $user->id;
- $updateuser->deleted = "1";
+ $updateuser->deleted = 1;
$updateuser->timemodified = time();
- if (update_record("user", $updateuser)) {
- // unenrol_student($user->id); // From all courses
- // remove_teacher($user->id); // From all courses
- // remove_admin($user->id);
- delete_records('role_assignments', 'userid', $user->id); // unassign all roles
- notify(get_string("deletedactivity", "", fullname($user, true)) );
+ if (update_record('user', $updateuser)) {
+ echo "\t";
+ print_string('auth_dbdeleteuser', 'auth', array($user->username, $user->id));
+ echo "\n";
} else {
- notify(get_string("deletednot", "", fullname($user, true)));
+ echo "\t";
+ print_string('auth_dbdeleteusererror', 'auth', $user->username);
+ echo "\n";
}
//copy pasted part ends
- }
+ }
commit_sql();
- }
- unset($remove_users); // free mem!
+ }
+ unset($remove_users); // free mem!
if (!count($userlist)) {
// exit right here
// only go ahead if we actually
// have fields to update locally
if (!empty($updatekeys)) {
- $sql = 'SELECT u.id, u.username
- FROM ' . $CFG->prefix .'user u
+ $sql = 'SELECT u.id, u.username
+ FROM ' . $CFG->prefix .'user u
WHERE u.auth=\'db\' AND u.deleted=\'0\' AND u.username IN (' . $quoteduserlist . ')';
- $update_users = get_records_sql($sql);
-
- foreach ($update_users as $user) {
- $this->db_update_user_record($user->username, $updatekeys);
+ if ($update_users = get_records_sql($sql)) {
+
+ foreach ($update_users as $user) {
+ $this->db_update_user_record(addslashes($user->username), $updatekeys);
+ }
+ unset($update_users); // free memory
}
- unset($update_users); // free memory
}
}
///
// NOTE: this is very memory intensive
// and generally inefficient
- $sql = 'SELECT u.id, u.username
- FROM ' . $CFG->prefix .'user u
+ $sql = 'SELECT u.id, u.username
+ FROM ' . $CFG->prefix .'user u
WHERE u.auth=\'db\' AND u.deleted=\'0\'';
$users = get_records_sql($sql);
-
+
// simplify down to usernames
$usernames = array();
foreach ($users as $user) {
foreach($add_users as $user) {
$username = $user;
$user = $this->get_userinfo_asobj($user);
-
+
// prep a few params
$user->username = $username;
$user->modified = time();
$user->confirmed = 1;
$user->auth = 'db';
$user->mnethostid = $CFG->mnet_localhost_id;
-
- // insert it
- $old_debug=$CFG->debug;
- $CFG->debug=10;
-
+ if (empty($user->lang)) {
+ $user->lang = $CFG->lang;
+ }
+
+ $user = addslashes_object($user);
// maybe the user has been deleted before
if ($old_user = get_record('user', 'username', $user->username, 'deleted', 1, 'mnethostid', $user->mnethostid)) {
$user->id = $old_user->id;
set_field('user', 'deleted', 0, 'username', $user->username);
- print_string('auth_dbrevive','auth',array($user->username, $user->id));
+ echo "\t";
+ print_string('auth_dbrevive','auth',array(stripslashes($user->username), $user->id));
echo "\n";
- } elseif ($id=insert_record ('user',$user)) { // it is truly a new user
- print_string('auth_dbinsertuser','auth',array($user->username, $id));
+ } elseif ($id = insert_record ('user',$user)) { // it is truly a new user
+ echo "\t";
+ print_string('auth_dbinsertuser','auth',array(stripslashes($user->username), $id));
echo "\n";
$user->id = $id;
// if relevant, tag for password generation
set_user_preference('create_password', 1, $id);
}
} else {
+ echo "\t";
print_string('auth_dbinsertusererror', 'auth', $user->username);
echo "\n";
}
- $CFG->debug=$old_debug;
}
commit_sql();
unset($add_users); // free mem
function user_exists ($username) {
+ $textlib = textlib_get_instance();
+ $extusername = $textlib->convert(stripslashes($username), 'utf-8', $this->config->extencoding);
+
// Connect to the external database (forcing new connection)
$authdb = &ADONewConnection($this->config->type);
- $authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
+ if (!empty($this->config->debugauthdb)) {
+ $authdb->debug = true;
+ ob_start();//start output buffer to allow later use of the page headers
+ }
+ $authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
$authdb->SetFetchMode(ADODB_FETCH_ASSOC);
+ if (!empty($this->config->setupsql)) {
+ $authdb->Execute($this->config->setupsql);
+ }
- $rs = $authdb->Execute("SELECT * FROM {$this->config->table}
- WHERE {$this->config->fielduser} = '$username' ");
+ $rs = $authdb->Execute("SELECT * FROM {$this->config->table}
+ WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."' ");
$authdb->Close();
if (!$rs) {
print_error('auth_dbcantconnect','auth');
return false;
}
-
+
if ( $rs->RecordCount() ) {
// user exists exterally
- // check username/password internally
- // ?? there is no $password variable, so why??
- /*if ($user = get_record('user', 'username', $username)) {
- return ($user->password == md5($password));
- }*/
return $rs->RecordCount();
} else {
// user does not exist externally
return false;
- }
+ }
}
// Connect to the external database (forcing new connection)
$authdb = &ADONewConnection($this->config->type);
- $authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
+ if (!empty($this->config->debugauthdb)) {
+ $authdb->debug = true;
+ ob_start();//start output buffer to allow later use of the page headers
+ }
+ $authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
$authdb->SetFetchMode(ADODB_FETCH_ASSOC);
+ if (!empty($this->config->setupsql)) {
+ $authdb->Execute($this->config->setupsql);
+ }
// fetch userlist
$rs = $authdb->Execute("SELECT {$this->config->fielduser} AS username
print_error('auth_dbcantconnect','auth');
return false;
}
-
+
if ( $rs->RecordCount() ) {
$userlist = array();
while ($rec = rs_fetch_next_record($rs)) {
return $userlist;
} else {
return array();
- }
+ }
}
/**
* reads userinformation from DB and return it in an object
*
- * @param string $username username
+ * @param string $username username (with system magic quotes)
* @return array
*/
function get_userinfo_asobj($username) {
$user_array = truncate_userinfo($this->get_userinfo($username));
- $user = new object;
+ $user = new object();
foreach($user_array as $key=>$value) {
$user->{$key} = $value;
}
return $user;
}
- /*
- * will update a local user record from an external source.
- * is a lighter version of the one in moodlelib -- won't do
+ /**
+ * will update a local user record from an external source.
+ * is a lighter version of the one in moodlelib -- won't do
* expensive ops such as enrolment
*
- * If you don't pass $updatekeys, there is a performance hit and
+ * If you don't pass $updatekeys, there is a performance hit and
* values removed from DB won't be removed from moodle.
+ *
+ * @param string $username username (with system magic quotes)
*/
function db_update_user_record($username, $updatekeys=false) {
global $CFG;
//just in case check text case
$username = trim(moodle_strtolower($username));
-
+
// get the current user record
$user = get_record('user', 'username', $username, 'mnethostid', $CFG->mnet_localhost_id);
if (empty($user)) { // trouble
// Ensure userid is not overwritten
$userid = $user->id;
- // TODO: this had a function_exists() - now we have a $this
+ // TODO: this had a function_exists() - now we have a $this
if ($newinfo = $this->get_userinfo($username)) {
$newinfo = truncate_userinfo($newinfo);
-
+
if (empty($updatekeys)) { // all keys? this does not support removing values
$updatekeys = array_keys($newinfo);
}
-
+
foreach ($updatekeys as $key) {
- unset($value);
if (isset($newinfo[$key])) {
$value = $newinfo[$key];
- $value = addslashes(stripslashes($value)); // Just in case
} else {
$value = '';
}
- if (!empty($this->config->{'field_updatelocal_' . $key})) {
+
+ if (!empty($this->config->{'field_updatelocal_' . $key})) {
if ($user->{$key} != $value) { // only update if it's changed
- set_field('user', $key, $value, 'id', $userid);
+ set_field('user', $key, addslashes($value), 'id', $userid);
}
}
}
return get_record_select("user", "id = '$userid' AND deleted <> '1'");
}
- // A chance to validate form data, and last chance to
- // do stuff before it is inserted in config_plugin
- function validate_form(&$form, &$err) {
+ /**
+ * A chance to validate form data, and last chance to
+ * do stuff before it is inserted in config_plugin
+ */
+ function validate_form(&$form, &$err) {
if ($form->passtype === 'internal') {
$this->config->changepasswordurl = '';
set_config('changepasswordurl', '', 'auth/db');
* @param array $page An object containing all the data for this page.
*/
function config_form($config, $err) {
- include "config.html";
+ include 'config.html';
}
/**
function process_config($config) {
// set to defaults if undefined
if (!isset($config->host)) {
- $config->host = "localhost";
+ $config->host = 'localhost';
}
if (!isset($config->type)) {
- $config->type = "mysql";
+ $config->type = 'mysql';
+ }
+ if (!isset($config->sybasequoting)) {
+ $config->sybasequoting = 0;
}
if (!isset($config->name)) {
- $config->name = "";
+ $config->name = '';
}
if (!isset($config->user)) {
- $config->user = "";
+ $config->user = '';
}
if (!isset($config->pass)) {
- $config->pass = "";
+ $config->pass = '';
}
if (!isset($config->table)) {
- $config->table = "";
+ $config->table = '';
}
if (!isset($config->fielduser)) {
- $config->fielduser = "";
+ $config->fielduser = '';
}
if (!isset($config->fieldpass)) {
- $config->fieldpass = "";
+ $config->fieldpass = '';
}
if (!isset($config->passtype)) {
- $config->passtype = "plaintext";
+ $config->passtype = 'plaintext';
+ }
+ if (!isset($config->extencoding)) {
+ $config->extencoding = 'utf-8';
+ }
+ if (!isset($config->setupsql)) {
+ $config->setupsql = '';
+ }
+ if (!isset($config->debugauthdb)) {
+ $config->debugauthdb = 0;
}
if (!isset($config->changepasswordurl)) {
$config->changepasswordurl = '';
}
+ $config = stripslashes_recursive($config);
// save settings
- set_config('host', $config->host, 'auth/db');
- set_config('type', $config->type, 'auth/db');
- set_config('name', $config->name, 'auth/db');
- set_config('user', $config->user, 'auth/db');
- set_config('pass', $config->pass, 'auth/db');
- set_config('table', $config->table, 'auth/db');
- set_config('fielduser', $config->fielduser, 'auth/db');
- set_config('fieldpass', $config->fieldpass, 'auth/db');
- set_config('passtype', $config->passtype, 'auth/db');
- set_config('changepasswordurl', $config->changepasswordurl, 'auth/db');
-
+ set_config('host', $config->host, 'auth/db');
+ set_config('type', $config->type, 'auth/db');
+ set_config('sybasequoting', $config->sybasequoting, 'auth/db');
+ set_config('name', $config->name, 'auth/db');
+ set_config('user', $config->user, 'auth/db');
+ set_config('pass', $config->pass, 'auth/db');
+ set_config('table', $config->table, 'auth/db');
+ set_config('fielduser', $config->fielduser, 'auth/db');
+ set_config('fieldpass', $config->fieldpass, 'auth/db');
+ set_config('passtype', $config->passtype, 'auth/db');
+ set_config('extencoding', trim($config->extencoding), 'auth/db');
+ set_config('setupsql', trim($config->setupsql), 'auth/db');
+ set_config('debugauthdb', $config->debugauthdb, 'auth/db');
+ set_config('changepasswordurl', trim($config->changepasswordurl), 'auth/db');
+
return true;
}
+ function ext_addslashes($text) {
+ // using custom made function for now
+ if (empty($this->config->sybasequoting)) {
+ $text = str_replace('\\', '\\\\', $text);
+ $text = str_replace(array('\'', '"', "\0"), array('\\\'', '\\"', '\\0'), $text);
+ } else {
+ $text = str_replace("'", "''", $text);
+ }
+ return $text;
+ }
}
?>
if (!isset($config->type)) {
$config->type = "mysql";
}
+ if (!isset($config->sybasequoting)) {
+ $config->sybasequoting = 0;
+ }
if (!isset($config->name)) {
$config->name = "";
}
if (!isset($config->changepasswordurl)) {
$config->changepasswordurl = '';
}
+ if (empty($config->extencoding)) {
+ $config->extencoding = 'utf-8';
+ }
+ if (empty($config->debugauthdb)) {
+ $config->debugauthdb = 0;
+ }
+ if (!isset($config->setupsql)) {
+ $config->setupsql = '';
+ }
$pluginconfig = get_config('auth/db');
<table cellspacing="0" cellpadding="5" border="0" align="center">
<tr valign="top" class="required">
- <td align="right"><?php print_string("auth_dbhost_key", "auth") ?>: </td>
+ <td align="right"><label for="host"><?php print_string("auth_dbhost_key", "auth") ?></label></td>
<td>
- <input name="host" type="text" size="30" value="<?php echo $config->host?>" />
+ <input id="host" name="host" type="text" size="30" value="<?php echo $config->host?>" />
<?php
if (isset($err["host"])) {
formerr($err["host"]);
}
-
+
?>
</td>
<td><?php print_string("auth_dbhost", "auth") ?></td>
</tr>
<tr valign="top" class="required">
- <td align="right"><?php print_string("auth_dbtype_key", "auth") ?>: </td>
+ <td align="right"><label for="menutype"><?php print_string("auth_dbtype_key", "auth") ?></label></td>
<td>
- <?php $dbtypes = array("access","ado_access", "ado", "ado_mssql", "borland_ibase", "csv", "db2", "fbsql", "firebird", "ibase", "informix72", "informix", "mssql", "mssql_n", "mysql", "mysqlt", "oci805", "oci8", "oci8po", "odbc", "odbc_mssql", "odbc_oracle", "oracle", "postgres64", "postgres7", "postgres", "proxy", "sqlanywhere", "sybase", "vfp");
+ <?php $dbtypes = array("access","ado_access", "ado", "ado_mssql", "borland_ibase", "csv", "db2", "fbsql", "firebird", "ibase", "informix72", "informix", "mssql", "mssql_n", "mysql", "mysqli", "mysqlt", "oci805", "oci8", "oci8po", "odbc", "odbc_mssql", "odbc_oracle", "oracle", "postgres64", "postgres7", "postgres", "proxy", "sqlanywhere", "sybase", "vfp");
foreach ($dbtypes as $dbtype) {
$dboptions[$dbtype] = $dbtype;
}
choose_from_menu($dboptions, "type", $config->type, "");
?>
-
+
</td>
<td>
<?php print_string("auth_dbtype","auth") ?>
</tr>
<tr valign="top" class="required">
- <td align="right"><?php print_string("auth_dbname_key", "auth") ?>: </td>
+ <td align="right"><label for="sybasequoting"><?php print_string("auth_dbsybasequoting", "auth") ?></label></td>
<td>
- <input name="name" type="text" size="30" value="<?php echo $config->name?>" />
+ <select id="sybasequoting" name="sybasequoting">
+ <option value="0" <?php echo ($config->sybasequoting ? '' : 'selected="yes"') ?> >
+ <?php print_string('no') ?></option>
+ <option value="1" <?php echo ($config->sybasequoting ? 'selected="yes"' : '') ?> >
+ <?php print_string('yes') ?></option>
+ </select>
+ </td>
+ <td><?php print_string("auth_dbsybasequotinghelp", "auth") ?></td>
+</tr>
+
+<tr valign="top" class="required">
+ <td align="right"><label for="name"><?php print_string("auth_dbname_key", "auth") ?></label></td>
+ <td>
+ <input id="name" name="name" type="text" size="30" value="<?php echo $config->name?>" />
<?php
if (isset($err["name"])) {
formerr($err["name"]);
}
-
+
?>
</td>
<td><?php print_string("auth_dbname", "auth") ?></td>
</tr>
<tr valign="top" class="required">
- <td align="right"><?php print_string("auth_dbuser_key", "auth") ?>: </td>
+ <td align="right"><label for="user"><?php print_string("auth_dbuser_key", "auth") ?></label></td>
<td>
- <input name="user" type="text" size="30" value="<?php echo $config->user?>" />
+ <input id="user" name="user" type="text" size="30" value="<?php echo $config->user?>" />
<?php
if (isset($err["user"])) {
</tr>
<tr valign="top" class="required">
- <td align="right"><?php print_string("auth_dbpass_key", "auth") ?>: </td>
+ <td align="right"><label for="pass"><?php print_string("auth_dbpass_key", "auth") ?></label></td>
<td>
- <input name="pass" type="text" size="30" value="<?php echo $config->pass?>" />
+ <input id="pass" name="pass" type="text" size="30" value="<?php echo $config->pass?>" />
<?php
if (isset($err["pass"])) {
</tr>
<tr valign="top" class="required">
- <td align="right"><?php print_string("auth_dbtable_key", "auth") ?>: </td>
+ <td align="right"><label for="table"><?php print_string("auth_dbtable_key", "auth") ?></label></td>
<td>
- <input name="table" type="text" size="30" value="<?php echo $config->table?>" />
+ <input id="table" name="table" type="text" size="30" value="<?php echo $config->table?>" />
<?php
if (isset($err["table"])) {
</tr>
<tr valign="top" class="required">
- <td align="right"><?php print_string("auth_dbfielduser_key", "auth") ?>: </td>
+ <td align="right"><label for="fielduser"><?php print_string("auth_dbfielduser_key", "auth") ?></label></td>
<td>
- <input name="fielduser" type="text" size="30" value="<?php echo $config->fielduser?>" />
+ <input id="fielduser" name="fielduser" type="text" size="30" value="<?php echo $config->fielduser?>" />
<?php
if (isset($err["fielduser"])) {
</tr>
<tr valign="top" class="required">
- <td align="right"><?php print_string("auth_dbfieldpass_key", "auth") ?>: </td>
+ <td align="right"><label for="fieldpass"><?php print_string("auth_dbfieldpass_key", "auth") ?></label></td>
<td>
- <input name="fieldpass" type="text" size="30" value="<?php echo $config->fieldpass?>" />
+ <input id="fieldpass" name="fieldpass" type="text" size="30" value="<?php echo $config->fieldpass?>" />
<?php
if (isset($err["fieldpass"])) {
</tr>
<tr valign="top" class="required">
- <td align="right"><?php print_string("auth_dbpasstype_key", "auth") ?>: </td>
+ <td align="right"><label for="menupasstype"><?php print_string("auth_dbpasstype_key", "auth") ?></label></td>
<td>
- <?php
+ <?php
$passtype["plaintext"] = get_string("plaintext", "auth");
$passtype["md5"] = get_string("md5", "auth");
+ $passtype["sha1"] = get_string("sha1", "auth");
$passtype["internal"] = get_string("internal", "auth");
choose_from_menu($passtype, "passtype", $config->passtype, "");
<td><?php print_string("auth_dbpasstype", "auth") ?></td>
</tr>
+<tr valign="top" class="required">
+ <td align="right"><label for="extencoding"><?php print_string("auth_dbextencoding", "auth") ?></label></td>
+ <td>
+ <input id="extencoding" name="extencoding" type="text" value="<?php echo $config->extencoding ?>" />
+ <?php
+
+ if (isset($err['extencoding'])) {
+ formerr($err['extencoding']);
+ }
+
+ ?>
+ </td>
+ <td><?php print_string('auth_dbextencodinghelp', 'auth') ?></td>
+</tr>
+
<tr valign="top">
- <td align="right"><?php print_string("auth_dbchangepasswordurl_key", "auth") ?>: </td>
+ <td align="right"><label for="setupsql"><?php print_string("auth_dbsetupsql", "auth") ?></label></td>
<td>
- <input name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
+ <input id="setupsql" name="setupsql" type="text" value="<?php echo $config->setupsql ?>" />
+ </td>
+ <td><?php print_string('auth_dbsetupsqlhelp', 'auth') ?></td>
+</tr>
+
+<tr valign="top">
+ <td align="right"><label for="debugauthdb"><?php print_string("auth_dbdebugauthdb", "auth") ?></label></td>
+ <td>
+ <select id="debugauthdb" name="debugauthdb">
+ <option value="0" <?php echo ($config->debugauthdb ? '' : 'selected="yes"') ?> >
+ <?php print_string('no') ?></option>
+ <option value="1" <?php echo ($config->debugauthdb ? 'selected="yes"' : '') ?> >
+ <?php print_string('yes') ?></option>
+ </select>
+ </td>
+ <td><?php print_string("auth_dbdebugauthdbhelp", "auth") ?></td>
+</tr>
+
+<tr valign="top">
+ <td align="right"><label for="changepasswordurl"><?php print_string("auth_dbchangepasswordurl_key", "auth") ?></label></td>
+ <td>
+ <input id="changepasswordurl" name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<?php
if (isset($err['changepasswordurl'])) {
</td>
<td><?php print_string('changepasswordhelp', 'auth') ?></td>
</tr>
-<?php
+<?php
global $user_fields;
print_auth_lock_options('db', $user_fields, get_string('auth_dbextrafields', 'auth'), true, false);