Пример #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
/**
 * 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;
    }
}