mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
New functions for login failure display
This commit is contained in:
parent
a7e0783741
commit
b4bac9b6b6
2 changed files with 89 additions and 6 deletions
|
@ -307,7 +307,7 @@ function count_records($table, $field1="", $value1="", $field2="", $value2="", $
|
||||||
* @param type description
|
* @param type description
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function count_records_select($table, $select="") {
|
function count_records_select($table, $select="", $countitem="COUNT(*)") {
|
||||||
|
|
||||||
global $CFG;
|
global $CFG;
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@ function count_records_select($table, $select="") {
|
||||||
$select = "WHERE $select";
|
$select = "WHERE $select";
|
||||||
}
|
}
|
||||||
|
|
||||||
return count_records_sql("SELECT COUNT(*) FROM $CFG->prefix$table $select");
|
return count_records_sql("SELECT $countitem FROM $CFG->prefix$table $select");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -571,7 +571,7 @@ function get_records_sql($sql) {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $rs->RecordCount() > 0 ) {
|
if ( $rs->RecordCount() > 0 ) {
|
||||||
if ($records = $rs->GetAssoc(true)) {
|
if ($records = $rs->GetAssoc(true)) {
|
||||||
foreach ($records as $key => $record) {
|
foreach ($records as $key => $record) {
|
||||||
|
@ -704,6 +704,33 @@ function get_field($table, $return, $field1, $value1, $field2="", $value2="", $f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a single field from a database record
|
||||||
|
*
|
||||||
|
* longdesc
|
||||||
|
*
|
||||||
|
* @param type description
|
||||||
|
*/
|
||||||
|
function get_field_sql($sql) {
|
||||||
|
|
||||||
|
global $db, $CFG;
|
||||||
|
|
||||||
|
$rs = $db->Execute($sql);
|
||||||
|
if (!$rs) {
|
||||||
|
if (isset($CFG->debug) and $CFG->debug > 7) {
|
||||||
|
notify($db->ErrorMsg()."<br /><br />$sql");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $rs->RecordCount() == 1 ) {
|
||||||
|
return $rs->fields[0];
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a single field in a database record
|
* Set a single field in a database record
|
||||||
*
|
*
|
||||||
|
@ -2127,7 +2154,7 @@ function add_to_log($courseid, $module, $action, $url="", $info="", $cm=0, $user
|
||||||
if (isset($USER->realuser)) { // Don't log
|
if (isset($USER->realuser)) { // Don't log
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$userid = empty($USER->id) ? "" : $USER->id;
|
$userid = empty($USER->id) ? "0" : $USER->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
$timenow = time();
|
$timenow = time();
|
||||||
|
@ -2183,8 +2210,7 @@ function get_logs($select, $order="l.time DESC", $limitfrom="", $limitnum="", &$
|
||||||
$order = "ORDER BY $order";
|
$order = "ORDER BY $order";
|
||||||
}
|
}
|
||||||
|
|
||||||
$selectsql = "{$CFG->prefix}log l, {$CFG->prefix}user u WHERE $select";
|
$selectsql = "{$CFG->prefix}log l LEFT JOIN {$CFG->prefix}user u ON l.userid = u.id ".((strlen($select) > 0) ? "WHERE $select" : "");
|
||||||
|
|
||||||
$totalcount = count_records_sql("SELECT COUNT(*) FROM $selectsql");
|
$totalcount = count_records_sql("SELECT COUNT(*) FROM $selectsql");
|
||||||
|
|
||||||
return get_records_sql("SELECT l.*, u.firstname, u.lastname, u.picture
|
return get_records_sql("SELECT l.*, u.firstname, u.lastname, u.picture
|
||||||
|
@ -2234,6 +2260,37 @@ function get_logs_userday($userid, $courseid, $daystart) {
|
||||||
GROUP BY hour ");
|
GROUP BY hour ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an object with counts of failed login attempts
|
||||||
|
*
|
||||||
|
* Returns information about failed login attempts. If the current user is
|
||||||
|
* an admin, then two numbers are returned: the number of attempts and the
|
||||||
|
* number of accounts. For non-admins, only the attempts on the given user
|
||||||
|
* are shown.
|
||||||
|
*
|
||||||
|
* @param mode - admin, teacher or everybody
|
||||||
|
* @param username - the username we are searching for
|
||||||
|
* @param lastlogin - the date from which we are searching
|
||||||
|
*/
|
||||||
|
|
||||||
|
function count_login_failures($mode, $username, $lastlogin) {
|
||||||
|
|
||||||
|
$select = "module='login' AND action='error' AND time > $lastlogin";
|
||||||
|
|
||||||
|
if (isadmin()) { // Return information about all accounts
|
||||||
|
if ($count->attempts = count_records_select('log', $select)) {
|
||||||
|
$count->accounts = count_records_select('log', $select, 'COUNT(DISTINCT info)');
|
||||||
|
return $count;
|
||||||
|
}
|
||||||
|
} else if ($mode == 'everybody' or ($mode == 'teacher' and isteacher())) {
|
||||||
|
if ($count->attempts = count_records_select('log', "$select AND info = '$username'")) {
|
||||||
|
return $count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// GENERAL HELPFUL THINGS ///////////////////////////////////
|
/// GENERAL HELPFUL THINGS ///////////////////////////////////
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -976,6 +976,27 @@ function print_header ($title="", $heading="", $navigation="", $focus="", $meta=
|
||||||
$menu = "<font size=\"2\"><a target=\"$CFG->framename\" href=\"$wwwroot/login/index.php\">".get_string("login")."</a></font>";
|
$menu = "<font size=\"2\"><a target=\"$CFG->framename\" href=\"$wwwroot/login/index.php\">".get_string("login")."</a></font>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($SESSION->justloggedin)) {
|
||||||
|
unset($SESSION->justloggedin);
|
||||||
|
if (!empty($CFG->displayloginfailures)) {
|
||||||
|
if (!empty($USER->username) and !isguest()) {
|
||||||
|
if ($count = count_login_failures($CFG->displayloginfailures, $USER->username, $USER->lastlogin)) {
|
||||||
|
$menu .= ' <font size="1">';
|
||||||
|
if (empty($count->accounts)) {
|
||||||
|
$menu .= get_string('failedloginattempts', '', $count);
|
||||||
|
} else {
|
||||||
|
$menu .= get_string('failedloginattemptsall', '', $count);
|
||||||
|
}
|
||||||
|
if (isadmin()) {
|
||||||
|
$menu .= ' (<a href="'.$CFG->wwwroot.'/course/log.php'.
|
||||||
|
'?chooselog=1&id=1&modid=site_errors">'.get_string('logs').'</a>)';
|
||||||
|
}
|
||||||
|
$menu .= '</font>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add a stylesheet for the HTML editor
|
// Add a stylesheet for the HTML editor
|
||||||
$meta = "<style type=\"text/css\">@import url($CFG->wwwroot/lib/editor/htmlarea.css);</style>\n$meta\n";
|
$meta = "<style type=\"text/css\">@import url($CFG->wwwroot/lib/editor/htmlarea.css);</style>\n$meta\n";
|
||||||
|
@ -2292,6 +2313,9 @@ function rebuildnolinktag($text) {
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ================================================
|
// ================================================
|
||||||
// THREE FUNCTIONS MOVED HERE FROM course/lib.php
|
// THREE FUNCTIONS MOVED HERE FROM course/lib.php
|
||||||
// ================================================
|
// ================================================
|
||||||
|
@ -2369,6 +2393,8 @@ function print_side_block_start($heading='', $attributes = array()) {
|
||||||
echo '<tbody style="background-color: '.$THEME->cellcontent2.';"><tr><td class="sideblockmain">';
|
echo '<tbody style="background-color: '.$THEME->cellcontent2.';"><tr><td class="sideblockmain">';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function print_side_block_end() {
|
function print_side_block_end() {
|
||||||
echo '</td></tr></tbody></table><br />';
|
echo '</td></tr></tbody></table><br />';
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue