示例#1
0
/**
 *
 * test here on branch bcvincent
 *
**/
function get_user_timeontask($userid, $debug = false)
{
    global $DB, $CFG;
    // grab login times
    $logins = get_user_logins($userid);
    // used to calculate total time
    $sessions = new DateTime();
    $now = new DateTime();
    // loop login times
    $i = 0;
    foreach ($logins as $login) {
        // get next login in loop
        if ($i < sizeof($logins)) {
            $next_login = $logins[$i + 1];
        }
        // build actities sql
        if ($next_login !== NULL) {
            // activities to be less then next login
            $activities_sql = "SELECT " . "log.timecreated " . "FROM {logstore_standard_log} log " . "WHERE " . "log.timecreated >= ? AND " . "log.timecreated < ? AND " . "log.userid = ? ";
            $cur_activities = $DB->get_records_sql($activities_sql, array($login->timecreated, $next_login->timecreated, $userid));
        } else {
            $activities_sql = "SELECT " . "log.timecreated " . "FROM {logstore_standard_log} log " . "WHERE " . "log.timecreated >= ? AND " . "log.userid = ? ";
            $cur_activities = $DB->get_records_sql($activities_sql, array($login->timecreated, $userid));
        }
        // calculate activities time
        $cur_activities = array_values($cur_activities);
        $first = current($cur_activities);
        end($cur_activities);
        $last = current($cur_activities);
        // total session time
        $total_time = calculate_activity_time($first->timecreated, $last->timecreated);
        $total_time_interval = new DateInterval($total_time);
        $sessions->add($total_time_interval);
        $i++;
    }
    unset($login);
    // create DateInterval
    $timeontask = $sessions->getTimestamp() - $now->getTimestamp();
    if ($debug) {
        echo $timeontask;
    } else {
        return $timeontask;
    }
}
示例#2
0
 *
**/
require_once dirname(__FILE__) . '/../../config.php';
require_once dirname(__FILE__) . '/setup.php';
require_once dirname(__FILE__) . '/lib.php';
require_login();
$this_url = new moodle_url($baseurl . basename(__FILE__));
$index_url = new moodle_url($baseurl . "index.php");
$submit_url = new moodle_url($baseurl . basename(__FILE__));
$test_id = 1330;
echo "<p style='border:solid 1px;'><strong>tot no subj</strong>";
var_dump(get_user_timeontask_subj($test_id, null, true));
echo "</p>";
echo "<p style='border:solid 1px;'><strong>tot w/soc studies</strong>";
var_dump(get_user_timeontask_subj($test_id, "socstudy", true));
echo "</p>";
echo "<p style='border:solid 1px;'><strong>format tot 2mins..</strong>";
var_dump(format_timeontask(120));
echo "</p>";
echo "<p style='border:solid 1px;'><strong>logins</strong>";
var_dump(get_user_logins($test_id));
echo "</p>";
echo "<p style='border:solid 1px;'><strong>phone</strong>";
var_dump(get_user_phone($test_id));
echo "</p>";
echo "<p style='border:solid 1px;'><strong>last logged</strong>";
var_dump(get_user_lastlogged($test_id));
echo "</p>";
echo "<p style='border:solid 1px;'><strong>inactive</strong>";
var_dump(get_user_timeinactive($test_id));
echo "</p>";
示例#3
0
文件: lib.php 项目: ket-ed/ae_reports
/**
 * calculates users time on task
 *
 * returns integer seconds
**/
function get_user_timeontask_subj($userid, $subj = NULL, $startReport = NULL, $endReport = NULL, $debug = false)
{
    global $DB, $CFG;
    // grab login times
    if ($endReport != NULL) {
        $endReport += 86400;
        //go to the end of the day on the end day.
    }
    $logins = get_user_logins($userid, $startReport, $endReport);
    // used to calculate total time
    $sessions = new DateTime();
    $now = new DateTime();
    if ($subj !== NULL) {
        switch ($subj) {
            case "math":
                $where_items = "( ";
                $where_items .= "log.courseid = '12' OR ";
                $where_items .= "log.courseid = '13' ";
                $where_items .= ") AND ";
                break;
            case "science":
                $where_items = "( ";
                $where_items .= "log.courseid = '25' ";
                $where_items .= ") AND ";
                break;
            case "socstudy":
                $where_items = "( ";
                //				$where_items .= "log.courseid = '19' ";
                $where_items .= "log.courseid = '19' OR ";
                $where_items .= "log.courseid = '2' ";
                $where_items .= ") AND ";
                break;
            case "language":
                $where_items = "( ";
                $where_items .= "log.courseid = '14' OR ";
                $where_items .= "log.courseid = '15' OR ";
                $where_items .= "log.courseid = '16' ";
                $where_items .= ") AND ";
                break;
            default:
                $where_items = "";
                break;
        }
    }
    // loop login times
    $i = 0;
    foreach ($logins as $login) {
        // get next login in loop
        if ($i < sizeof($logins)) {
            $next_login = $logins[$i + 1];
        }
        // build actities sql
        if ($next_login !== NULL) {
            // activities to be less then next login
            $activities_sql = "SELECT " . "log.timecreated " . "FROM {logstore_standard_log} log " . "WHERE " . "{$where_items}" . "log.timecreated >= ? AND " . "log.timecreated < ? AND " . "log.action <> 'loggedout' AND " . "log.userid = ? ";
            $temp_params = array($login->timecreated, $next_login->timecreated, $userid);
            $cur_activities = $DB->get_records_sql($activities_sql, $temp_params);
        } else {
            $activities_sql = "SELECT " . "log.timecreated " . "FROM {logstore_standard_log} log " . "WHERE " . "{$where_items}" . "log.timecreated >= ? AND " . "log.action <> 'loggedout' AND " . "log.userid = ? ";
            $temp_params = array($login->timecreated, $userid);
            $cur_activities = $DB->get_records_sql($activities_sql, $temp_params);
        }
        // calculate activities time
        $cur_activities = array_values($cur_activities);
        $first = current($cur_activities);
        end($cur_activities);
        $last = current($cur_activities);
        // total session time
        $total_time = calculate_activity_time($first->timecreated, $last->timecreated, $subj);
        $total_time_interval = new DateInterval($total_time);
        $sessions->add($total_time_interval);
        $i++;
        if ($debug) {
            var_dump($activities_sql);
            var_dump($temp_params);
            var_dump($total_time);
        }
    }
    unset($login);
    // create DateInterval
    $timeontask = $sessions->getTimestamp() - $now->getTimestamp();
    if ($debug) {
        var_dump($timeontask);
    } else {
        return $timeontask;
    }
}
示例#4
0
function timeontask_per_session($userid, $startReport = NULL, $endReport = NULL, $debug = false)
{
    global $DB, $CFG;
    // grab login times
    if ($endReport != NULL) {
        $endReport += 86400;
        //go to the end of the day on the end day.
    } else {
        $endReport = time();
        //if no end date given, use current time
    }
    $logins = get_user_logins($userid, $startReport, $endReport);
    // used to calculate total time
    $sessions = new DateTime();
    $now = new DateTime();
    $session_array = array();
    // loop login times
    $i = 0;
    $row_count = 0;
    $array_count = 0;
    $where_items = '';
    foreach ($logins as $login) {
        // get next login in loop
        if ($i < sizeof($logins) - 1) {
            $next_login = $logins[$i + 1];
        } else {
            $next_login = NULL;
        }
        // Find activities
        $activities_sql = "SELECT " . "log.id, log.timecreated, log.action, log.origin, log.courseid " . "FROM {logstore_standard_log} log " . "WHERE " . "{$where_items}" . "log.timecreated >= ? AND " . "log.timecreated < ? AND " . "log.timecreated < ? AND " . "log.target <> 'message' AND " . "log.action <> 'failed' AND " . "log.userid = ? AND " . "log.realuserid IS NULL " . "ORDER BY " . "log.timecreated ";
        if ($next_login !== NULL) {
            // if another login, use next_login's time
            $temp_params = array($login->timecreated, $next_login->timecreated, $endReport, $userid);
        } else {
            // if no more logins, use the endReport's time
            $temp_params = array($login->timecreated, $endReport, $endReport, $userid);
        }
        // Get activities
        $cur_activities = $DB->get_records_sql($activities_sql, $temp_params);
        // calculate activities time
        $cur_activities = array_values($cur_activities);
        $first = current($cur_activities);
        end($cur_activities);
        $last = current($cur_activities);
        // check if user logged out
        $loggedout = false;
        if ($last) {
            if ($last->action == 'loggedout') {
                $loggedout = true;
            }
            //            var_dump("sess");
            //            var_dump($loggedout);
            // total session time
            $total_time = calc_activity_time($first->timecreated, $last->timecreated, $loggedout);
            $total_time_interval = new DateInterval($total_time);
            $sessions->add($total_time_interval);
        }
        $i++;
        $timeontask = $total_time_interval->format("%D:%H:%I:%S");
        //  FIND WHERE THE STUDENT WAS WORKING
        $course_activity = "";
        foreach ($cur_activities as $log) {
            if ($log->courseid != 0 && $log->courseid != 1) {
                $names_sql = "SELECT fullname FROM mdl_course WHERE id = {$log->courseid}";
                $course_name = $DB->get_record_sql($names_sql);
                $course_activity .= $course_name->fullname . "<br>";
            }
        }
        $course_activity = implode('<br>', array_unique(explode('<br>', $course_activity)));
        // BUILD TEMP ARRAY FOR RETURN
        $row_count++;
        $temparray['Record'] = $row_count;
        $temparray['Time'] = date("m-d-Y h:i:s a", $login->timecreated);
        if (!$course_activity) {
            $temparray['Courses'] = "&nbsp;";
        } else {
            $temparray['Courses'] = $course_activity;
        }
        $temparray['Session'] = $timeontask;
        $temparray['first'] = $first->timecreated;
        $temparray['last'] = $last->timecreated;
        $sessions_array[] = $temparray;
        $array_count++;
    }
    unset($login);
    return $sessions_array;
}