Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
integration
prechecker
Commits
e7aeaa65
Commit
e7aeaa65
authored
Dec 26, 2012
by
Petr Škoda
Browse files
MDL-37304 cleanup auth_db and use progress_trace
parent
0dc5a532
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
auth/db/auth.php
View file @
e7aeaa65
This diff is collapsed.
Click to expand it.
auth/db/cli/sync_users.php
View file @
e7aeaa65
...
...
@@ -23,7 +23,7 @@
*
* Sample cron entry:
* # 5 minutes past 4am
* 5 4 * * *
$
sudo -u www-data /usr/bin/php /var/www/moodle/auth/db/cli/sync_users.php
* 5 4 * * * sudo -u www-data /usr/bin/php /var/www/moodle/auth/db/cli/sync_users.php
*
* Notes:
* - it is required to use the web server account when executing PHP CLI scripts
...
...
@@ -37,19 +37,17 @@
* Performance notes:
* + The code is simpler, but not as optimized as its LDAP counterpart.
*
* @package auth
* @subpackage db
* @package auth_db
* @copyright 2006 Martin Langhoff
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define
(
'CLI_SCRIPT'
,
true
);
require
(
dirname
(
dirname
(
dirname
(
dirname
(
__FILE__
))))
.
'/config.php'
);
require_once
(
$CFG
->
dirroot
.
'/course/lib.php'
);
require_once
(
$CFG
->
libdir
.
'/clilib.php'
);
require
(
__DIR__
.
'/../../../config.php'
);
require_once
(
"
$CFG->libdir
/clilib.php"
);
//
n
ow get cli options
//
N
ow get cli options
.
list
(
$options
,
$unrecognized
)
=
cli_get_params
(
array
(
'noupdate'
=>
false
,
'verbose'
=>
false
,
'help'
=>
false
),
array
(
'n'
=>
'noupdate'
,
'v'
=>
'verbose'
,
'h'
=>
'help'
));
if
(
$unrecognized
)
{
...
...
@@ -64,15 +62,15 @@ The auth_db plugin must be enabled and properly configured.
Options:
-n, --noupdate Skip update of existing users
-v, --verbose Print verbose progess information
-v, --verbose Print verbose prog
r
ess information
-h, --help Print out this help
Example:
\$
sudo -u www-data /usr/bin/php auth/db/cli/sync_users.php
\$
sudo -u www-data /usr/bin/php auth/db/cli/sync_users.php
Sample cron entry:
# 5 minutes past 4am
5 4 * * *
\$
sudo -u www-data /usr/bin/php /var/www/moodle/auth/db/cli/sync_users.php
5 4 * * * sudo -u www-data /usr/bin/php /var/www/moodle/auth/db/cli/sync_users.php
"
;
echo
$help
;
...
...
@@ -80,13 +78,19 @@ Sample cron entry:
}
if
(
!
is_enabled_auth
(
'db'
))
{
echo
"Plugin not enabled!"
;
exit
(
1
);
cli_error
(
'auth_db plugin is disabled, synchronisation stopped'
,
2
);
}
if
(
empty
(
$options
[
'verbose'
]))
{
$trace
=
new
null_progress_trace
();
}
else
{
$trace
=
new
text_progress_trace
();
}
$verbose
=
!
empty
(
$options
[
'verbose'
]);
$update
=
empty
(
$options
[
'noupdate'
]);
/** @var auth_plugin_db $dbauth */
$dbauth
=
get_auth_plugin
(
'db'
);
re
turn
$dbauth
->
sync_users
(
$
update
,
$verbos
e
);
$
re
sult
=
$dbauth
->
sync_users
(
$
trace
,
$updat
e
);
exit
(
$result
);
auth/db/db/install.php
View file @
e7aeaa65
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* auth_db installer script.
*
* @package auth_db
* @copyright 2009 Petr Skoda {@link http://skodak.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
function
xmldb_auth_db_install
()
{
global
$CFG
,
$DB
;
...
...
auth/db/lang/en/auth_db.php
View file @
e7aeaa65
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
...
...
@@ -16,7 +15,7 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Strings for component 'auth_db', language 'en'
, branch 'MOODLE_20_STABLE'
* Strings for component 'auth_db', language 'en'
.
*
* @package auth_db
* @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
...
...
auth/db/tests/db_test.php
0 → 100644
View file @
e7aeaa65
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* External database auth sync tests, this also tests adodb drivers
* that are matching our four supported Moodle database drivers.
*
* @package auth_db
* @category phpunit
* @copyright 2012 Petr Skoda {@link http://skodak.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined
(
'MOODLE_INTERNAL'
)
||
die
();
class
auth_db_testcase
extends
advanced_testcase
{
protected
function
init_auth_database
()
{
global
$DB
,
$CFG
;
require_once
(
"
$CFG->dirroot
/auth/db/auth.php"
);
$dbman
=
$DB
->
get_manager
();
set_config
(
'extencoding'
,
'utf-8'
,
'auth/db'
);
set_config
(
'host'
,
$CFG
->
dbhost
,
'auth/db'
);
set_config
(
'user'
,
$CFG
->
dbuser
,
'auth/db'
);
set_config
(
'pass'
,
$CFG
->
dbpass
,
'auth/db'
);
set_config
(
'name'
,
$CFG
->
dbname
,
'auth/db'
);
if
(
!
empty
(
$CFG
->
dboptions
[
'dbport'
]))
{
set_config
(
'host'
,
$CFG
->
dbhost
.
':'
.
$CFG
->
dboptions
[
'dbport'
],
'auth/db'
);
}
switch
(
get_class
(
$DB
))
{
case
'mssql_native_moodle_database'
:
set_config
(
'type'
,
'mssql_n'
,
'auth/db'
);
set_config
(
'sybasequoting'
,
'1'
,
'auth/db'
);
break
;
case
'mysqli_native_moodle_database'
:
set_config
(
'type'
,
'mysqli'
,
'auth/db'
);
set_config
(
'setupsql'
,
"SET NAMES 'UTF-8'"
,
'auth/db'
);
set_config
(
'sybasequoting'
,
'0'
,
'auth/db'
);
if
(
!
empty
(
$CFG
->
dboptions
[
'dbsocket'
]))
{
$dbsocket
=
$CFG
->
dboptions
[
'dbsocket'
];
if
((
strpos
(
$dbsocket
,
'/'
)
===
false
and
strpos
(
$dbsocket
,
'\\'
)
===
false
))
{
$dbsocket
=
ini_get
(
'mysqli.default_socket'
);
}
set_config
(
'type'
,
'mysqli://'
.
rawurlencode
(
$CFG
->
dbuser
)
.
':'
.
rawurlencode
(
$CFG
->
dbpass
)
.
'@'
.
rawurlencode
(
$CFG
->
dbhost
)
.
'/'
.
rawurlencode
(
$CFG
->
dbname
)
.
'?socket='
.
rawurlencode
(
$dbsocket
),
'auth/db'
);
}
break
;
case
'oci_native_moodle_database'
:
set_config
(
'type'
,
'oci8po'
,
'auth/db'
);
set_config
(
'sybasequoting'
,
'1'
,
'auth/db'
);
break
;
case
'pgsql_native_moodle_database'
:
set_config
(
'type'
,
'postgres7'
,
'auth/db'
);
set_config
(
'setupsql'
,
"SET NAMES 'UTF-8'"
,
'auth/db'
);
set_config
(
'sybasequoting'
,
'0'
,
'auth/db'
);
if
(
!
empty
(
$CFG
->
dboptions
[
'dbsocket'
])
and
(
$CFG
->
dbhost
===
'localhost'
or
$CFG
->
dbhost
===
'127.0.0.1'
))
{
if
(
strpos
(
$CFG
->
dboptions
[
'dbsocket'
],
'/'
)
!==
false
)
{
set_config
(
'host'
,
$CFG
->
dboptions
[
'dbsocket'
],
'auth/db'
);
}
else
{
set_config
(
'host'
,
''
,
'auth/db'
);
}
}
break
;
case
'sqlsrv_native_moodle_database'
:
set_config
(
'type'
,
'mssqlnative'
,
'auth/db'
);
set_config
(
'sybasequoting'
,
'1'
,
'auth/db'
);
break
;
default
:
throw
new
exception
(
'Unknown database driver '
.
get_class
(
$DB
));
}
$table
=
new
xmldb_table
(
'auth_db_users'
);
$table
->
add_field
(
'id'
,
XMLDB_TYPE_INTEGER
,
'10'
,
null
,
XMLDB_NOTNULL
,
XMLDB_SEQUENCE
,
null
);
$table
->
add_field
(
'name'
,
XMLDB_TYPE_CHAR
,
'255'
,
null
,
null
,
null
);
$table
->
add_field
(
'pass'
,
XMLDB_TYPE_CHAR
,
'255'
,
null
,
null
,
null
);
$table
->
add_field
(
'email'
,
XMLDB_TYPE_CHAR
,
'255'
,
null
,
null
,
null
);
$table
->
add_field
(
'firstname'
,
XMLDB_TYPE_CHAR
,
'255'
,
null
,
null
,
null
);
$table
->
add_field
(
'lastname'
,
XMLDB_TYPE_CHAR
,
'255'
,
null
,
null
,
null
);
$table
->
add_key
(
'primary'
,
XMLDB_KEY_PRIMARY
,
array
(
'id'
));
if
(
$dbman
->
table_exists
(
$table
))
{
$dbman
->
drop_table
(
$table
);
}
$dbman
->
create_table
(
$table
);
set_config
(
'table'
,
$CFG
->
prefix
.
'auth_db_users'
,
'auth/db'
);
set_config
(
'fielduser'
,
'name'
,
'auth/db'
);
set_config
(
'fieldpass'
,
'pass'
,
'auth/db'
);
// Setu up field mappings.
set_config
(
'field_map_email'
,
'email'
,
'auth/db'
);
set_config
(
'field_updatelocal_email'
,
'oncreate'
,
'auth/db'
);
set_config
(
'field_updateremote_email'
,
'0'
,
'auth/db'
);
set_config
(
'field_lock_email'
,
'unlocked'
,
'auth/db'
);
// Init the rest of settings.
set_config
(
'passtype'
,
'plaintext'
,
'auth/db'
);
set_config
(
'changepasswordurl'
,
''
,
'auth/db'
);
set_config
(
'debugauthdb'
,
0
,
'auth/db'
);
set_config
(
'removeuser'
,
AUTH_REMOVEUSER_KEEP
,
'auth/db'
);
}
protected
function
cleanup_auth_database
()
{
global
$DB
;
$dbman
=
$DB
->
get_manager
();
$table
=
new
xmldb_table
(
'auth_db_users'
);
$dbman
->
drop_table
(
$table
);
}
public
function
test_plugin
()
{
global
$DB
,
$CFG
;
$this
->
resetAfterTest
(
false
);
// NOTE: It is strongly discouraged to create new tables in advanced_testcase classes,
// but there is no other simple way to test ext database enrol sync, so let's
// disable transactions are try to cleanup after the tests.
$this
->
preventResetByRollback
();
$this
->
init_auth_database
();
/** @var auth_plugin_db $auth */
$auth
=
get_auth_plugin
(
'db'
);
$authdb
=
$auth
->
db_init
();
// Test adodb may access the table.
$user1
=
(
object
)
array
(
'name'
=>
'u1'
,
'pass'
=>
'heslo'
,
'email'
=>
'u1@example.com'
);
$user1
->
id
=
$DB
->
insert_record
(
'auth_db_users'
,
$user1
);
$sql
=
"SELECT * FROM
{
$auth
->
config
->
table
}
"
;
$rs
=
$authdb
->
Execute
(
$sql
);
$this
->
assertInstanceOf
(
'ADORecordSet'
,
$rs
);
$this
->
assertFalse
(
$rs
->
EOF
);
$fields
=
$rs
->
FetchRow
();
$this
->
assertTrue
(
is_array
(
$fields
));
$this
->
assertTrue
(
$rs
->
EOF
);
$rs
->
Close
();
$authdb
->
Close
();
// Test bulk user account creation.
$user2
=
(
object
)
array
(
'name'
=>
'u2'
,
'pass'
=>
'heslo'
,
'email'
=>
'u2@example.com'
);
$user2
->
id
=
$DB
->
insert_record
(
'auth_db_users'
,
$user2
);
$user3
=
(
object
)
array
(
'name'
=>
'admin'
,
'pass'
=>
'heslo'
,
'email'
=>
'admin@example.com'
);
// Should be skipped.
$user3
->
id
=
$DB
->
insert_record
(
'auth_db_users'
,
$user3
);
$this
->
assertCount
(
2
,
$DB
->
get_records
(
'user'
));
$trace
=
new
null_progress_trace
();
$auth
->
sync_users
(
$trace
,
false
);
$this
->
assertEquals
(
4
,
$DB
->
count_records
(
'user'
));
$u1
=
$DB
->
get_record
(
'user'
,
array
(
'username'
=>
$user1
->
name
,
'auth'
=>
'db'
));
$this
->
assertSame
(
$user1
->
email
,
$u1
->
email
);
$u2
=
$DB
->
get_record
(
'user'
,
array
(
'username'
=>
$user2
->
name
,
'auth'
=>
'db'
));
$this
->
assertSame
(
$user2
->
email
,
$u2
->
email
);
$admin
=
$DB
->
get_record
(
'user'
,
array
(
'username'
=>
'admin'
,
'auth'
=>
'manual'
));
$this
->
assertNotEmpty
(
$admin
);
// Test sync updates.
$user2b
=
clone
(
$user2
);
$user2b
->
email
=
'u2b@example.com'
;
$DB
->
update_record
(
'auth_db_users'
,
$user2b
);
$auth
->
sync_users
(
$trace
,
false
);
$this
->
assertEquals
(
4
,
$DB
->
count_records
(
'user'
));
$u2
=
$DB
->
get_record
(
'user'
,
array
(
'username'
=>
$user2
->
name
));
$this
->
assertSame
(
$user2
->
email
,
$u2
->
email
);
$auth
->
sync_users
(
$trace
,
true
);
$this
->
assertEquals
(
4
,
$DB
->
count_records
(
'user'
));
$u2
=
$DB
->
get_record
(
'user'
,
array
(
'username'
=>
$user2
->
name
));
$this
->
assertSame
(
$user2
->
email
,
$u2
->
email
);
set_config
(
'field_updatelocal_email'
,
'onlogin'
,
'auth/db'
);
$auth
->
config
->
field_updatelocal_email
=
'onlogin'
;
$auth
->
sync_users
(
$trace
,
false
);
$this
->
assertEquals
(
4
,
$DB
->
count_records
(
'user'
));
$u2
=
$DB
->
get_record
(
'user'
,
array
(
'username'
=>
$user2
->
name
));
$this
->
assertSame
(
$user2
->
email
,
$u2
->
email
);
$auth
->
sync_users
(
$trace
,
true
);
$this
->
assertEquals
(
4
,
$DB
->
count_records
(
'user'
));
$u2
=
$DB
->
get_record
(
'user'
,
array
(
'username'
=>
$user2
->
name
));
$this
->
assertSame
(
$user2b
->
email
,
$u2
->
email
);
// Test sync deletes and suspends.
$DB
->
delete_records
(
'auth_db_users'
,
array
(
'id'
=>
$user2
->
id
));
$this
->
assertCount
(
2
,
$DB
->
get_records
(
'auth_db_users'
));
unset
(
$user2
);
unset
(
$user2b
);
$auth
->
sync_users
(
$trace
,
false
);
$this
->
assertEquals
(
4
,
$DB
->
count_records
(
'user'
));
$this
->
assertEquals
(
0
,
$DB
->
count_records
(
'user'
,
array
(
'deleted'
=>
1
)));
$this
->
assertEquals
(
0
,
$DB
->
count_records
(
'user'
,
array
(
'suspended'
=>
1
)));
set_config
(
'removeuser'
,
AUTH_REMOVEUSER_SUSPEND
,
'auth/db'
);
$auth
->
config
->
removeuser
=
AUTH_REMOVEUSER_SUSPEND
;
$auth
->
sync_users
(
$trace
,
false
);
$this
->
assertEquals
(
4
,
$DB
->
count_records
(
'user'
));
$this
->
assertEquals
(
0
,
$DB
->
count_records
(
'user'
,
array
(
'deleted'
=>
1
)));
$this
->
assertEquals
(
1
,
$DB
->
count_records
(
'user'
,
array
(
'suspended'
=>
1
)));
$user2
=
(
object
)
array
(
'name'
=>
'u2'
,
'pass'
=>
'heslo'
,
'email'
=>
'u2@example.com'
);
$user2
->
id
=
$DB
->
insert_record
(
'auth_db_users'
,
$user2
);
$auth
->
sync_users
(
$trace
,
false
);
$this
->
assertEquals
(
4
,
$DB
->
count_records
(
'user'
));
$this
->
assertEquals
(
0
,
$DB
->
count_records
(
'user'
,
array
(
'deleted'
=>
1
)));
$this
->
assertEquals
(
0
,
$DB
->
count_records
(
'user'
,
array
(
'suspended'
=>
1
)));
$DB
->
delete_records
(
'auth_db_users'
,
array
(
'id'
=>
$user2
->
id
));
set_config
(
'removeuser'
,
AUTH_REMOVEUSER_FULLDELETE
,
'auth/db'
);
$auth
->
config
->
removeuser
=
AUTH_REMOVEUSER_FULLDELETE
;
$auth
->
sync_users
(
$trace
,
false
);
$this
->
assertEquals
(
4
,
$DB
->
count_records
(
'user'
));
$this
->
assertEquals
(
1
,
$DB
->
count_records
(
'user'
,
array
(
'deleted'
=>
1
)));
$this
->
assertEquals
(
0
,
$DB
->
count_records
(
'user'
,
array
(
'suspended'
=>
1
)));
$user2
=
(
object
)
array
(
'name'
=>
'u2'
,
'pass'
=>
'heslo'
,
'email'
=>
'u2@example.com'
);
$user2
->
id
=
$DB
->
insert_record
(
'auth_db_users'
,
$user2
);
$auth
->
sync_users
(
$trace
,
false
);
$this
->
assertEquals
(
5
,
$DB
->
count_records
(
'user'
));
$this
->
assertEquals
(
1
,
$DB
->
count_records
(
'user'
,
array
(
'deleted'
=>
1
)));
$this
->
assertEquals
(
0
,
$DB
->
count_records
(
'user'
,
array
(
'suspended'
=>
1
)));
// Test user_login().
$user3
=
(
object
)
array
(
'name'
=>
'u3'
,
'pass'
=>
'heslo'
,
'email'
=>
'u3@example.com'
);
$user3
->
id
=
$DB
->
insert_record
(
'auth_db_users'
,
$user3
);
$this
->
assertFalse
(
$auth
->
user_login
(
'u4'
,
'heslo'
));
$this
->
assertTrue
(
$auth
->
user_login
(
'u1'
,
'heslo'
));
$this
->
assertFalse
(
$DB
->
record_exists
(
'user'
,
array
(
'username'
=>
'u3'
,
'auth'
=>
'db'
)));
$this
->
assertTrue
(
$auth
->
user_login
(
'u3'
,
'heslo'
));
$this
->
assertFalse
(
$DB
->
record_exists
(
'user'
,
array
(
'username'
=>
'u3'
,
'auth'
=>
'db'
)));
set_config
(
'passtype'
,
'md5'
,
'auth/db'
);
$auth
->
config
->
passtype
=
'md5'
;
$user3
->
pass
=
md5
(
'heslo'
);
$DB
->
update_record
(
'auth_db_users'
,
$user3
);
$this
->
assertTrue
(
$auth
->
user_login
(
'u3'
,
'heslo'
));
set_config
(
'passtype'
,
'sh1'
,
'auth/db'
);
$auth
->
config
->
passtype
=
'sha1'
;
$user3
->
pass
=
sha1
(
'heslo'
);
$DB
->
update_record
(
'auth_db_users'
,
$user3
);
$this
->
assertTrue
(
$auth
->
user_login
(
'u3'
,
'heslo'
));
set_config
(
'passtype'
,
'internal'
,
'auth/db'
);
$auth
->
config
->
passtype
=
'internal'
;
create_user_record
(
'u3'
,
'heslo'
,
'db'
);
$this
->
assertTrue
(
$auth
->
user_login
(
'u3'
,
'heslo'
));
$DB
->
delete_records
(
'auth_db_users'
,
array
(
'id'
=>
$user3
->
id
));
set_config
(
'removeuser'
,
AUTH_REMOVEUSER_KEEP
,
'auth/db'
);
$auth
->
config
->
removeuser
=
AUTH_REMOVEUSER_KEEP
;
$this
->
assertTrue
(
$auth
->
user_login
(
'u3'
,
'heslo'
));
set_config
(
'removeuser'
,
AUTH_REMOVEUSER_SUSPEND
,
'auth/db'
);
$auth
->
config
->
removeuser
=
AUTH_REMOVEUSER_SUSPEND
;
$this
->
assertFalse
(
$auth
->
user_login
(
'u3'
,
'heslo'
));
set_config
(
'removeuser'
,
AUTH_REMOVEUSER_FULLDELETE
,
'auth/db'
);
$auth
->
config
->
removeuser
=
AUTH_REMOVEUSER_FULLDELETE
;
$this
->
assertFalse
(
$auth
->
user_login
(
'u3'
,
'heslo'
));
set_config
(
'passtype'
,
'sh1'
,
'auth/db'
);
$auth
->
config
->
passtype
=
'sha1'
;
$this
->
assertFalse
(
$auth
->
user_login
(
'u3'
,
'heslo'
));
// Test login create and update.
$user4
=
(
object
)
array
(
'name'
=>
'u4'
,
'pass'
=>
'heslo'
,
'email'
=>
'u4@example.com'
);
$user4
->
id
=
$DB
->
insert_record
(
'auth_db_users'
,
$user4
);
set_config
(
'passtype'
,
'plaintext'
,
'auth/db'
);
$auth
->
config
->
passtype
=
'plaintext'
;
$iuser4
=
create_user_record
(
'u4'
,
'heslo'
,
'db'
);
$this
->
assertNotEmpty
(
$iuser4
);
$this
->
assertSame
(
$user4
->
name
,
$iuser4
->
username
);
$this
->
assertSame
(
$user4
->
email
,
$iuser4
->
email
);
$this
->
assertSame
(
'db'
,
$iuser4
->
auth
);
$this
->
assertSame
(
$CFG
->
mnet_localhost_id
,
$iuser4
->
mnethostid
);
$user4b
=
clone
(
$user4
);
$user4b
->
email
=
'u4b@example.com'
;
$DB
->
update_record
(
'auth_db_users'
,
$user4b
);
set_config
(
'field_updatelocal_email'
,
'oncreate'
,
'auth/db'
);
$auth
->
config
->
field_updatelocal_email
=
'oncreate'
;
update_user_record
(
'u4'
);
$iuser4
=
$DB
->
get_record
(
'user'
,
array
(
'id'
=>
$iuser4
->
id
));
$this
->
assertSame
(
$user4
->
email
,
$iuser4
->
email
);
set_config
(
'field_updatelocal_email'
,
'onlogin'
,
'auth/db'
);
$auth
->
config
->
field_updatelocal_email
=
'onlogin'
;
update_user_record
(
'u4'
);
$iuser4
=
$DB
->
get_record
(
'user'
,
array
(
'id'
=>
$iuser4
->
id
));
$this
->
assertSame
(
$user4b
->
email
,
$iuser4
->
email
);
// Test user_exists()
$this
->
assertTrue
(
$auth
->
user_exists
(
'u1'
));
$this
->
assertTrue
(
$auth
->
user_exists
(
'admin'
));
$this
->
assertFalse
(
$auth
->
user_exists
(
'u3'
));
$this
->
assertTrue
(
$auth
->
user_exists
(
'u4'
));
$this
->
cleanup_auth_database
();
}
}
auth/db/version.php
View file @
e7aeaa65
...
...
@@ -17,8 +17,7 @@
/**
* Version details
*
* @package auth
* @subpackage db
* @package auth_db
* @copyright 1999 onwards Martin Dougiamas (http://dougiamas.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment