~ubuntu-branches/ubuntu/utopic/moodle/utopic

« back to all changes in this revision

Viewing changes to mod/feedback/lib.php

  • Committer: Package Import Robot
  • Author(s): Thijs Kinkhorst
  • Date: 2014-05-12 16:10:38 UTC
  • mfrom: (36.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20140512161038-puyqf65k4e0s8ytz
Tags: 2.6.3-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
require_once($CFG->libdir.'/eventslib.php');
28
28
/** Include calendar/lib.php */
29
29
require_once($CFG->dirroot.'/calendar/lib.php');
 
30
// Include forms lib.
 
31
require_once($CFG->libdir.'/formslib.php');
30
32
 
31
33
define('FEEDBACK_ANONYMOUS_YES', 1);
32
34
define('FEEDBACK_ANONYMOUS_NO', 2);
383
385
 
384
386
    $sqlargs = array();
385
387
 
386
 
    //TODO: user user_picture::fields;
387
 
    $sql = " SELECT fk . * , fc . * , u.firstname, u.lastname, u.email, u.picture, u.email
388
 
                                            FROM {feedback_completed} fc
389
 
                                                JOIN {feedback} fk ON fk.id = fc.feedback
390
 
                                                JOIN {user} u ON u.id = fc.userid ";
 
388
    $userfields = user_picture::fields('u', null, 'useridagain');
 
389
    $sql = " SELECT fk . * , fc . * , $userfields
 
390
                FROM {feedback_completed} fc
 
391
                    JOIN {feedback} fk ON fk.id = fc.feedback
 
392
                    JOIN {user} u ON u.id = fc.userid ";
391
393
 
392
394
    if ($groupid) {
393
395
        $sql .= " JOIN {groups_members} gm ON  gm.userid=u.id ";
421
423
    $viewfullnames   = has_capability('moodle/site:viewfullnames', $cm_context);
422
424
    $groupmode       = groups_get_activity_groupmode($cm, $course);
423
425
 
424
 
    if (is_null($modinfo->groups)) {
425
 
        // load all my groups and cache it in modinfo
426
 
        $modinfo->groups = groups_get_user_groups($course->id);
427
 
    }
428
 
 
429
426
    $aname = format_string($cm->name, true);
430
427
    foreach ($feedbackitems as $feedbackitem) {
431
428
        if ($feedbackitem->userid != $USER->id) {
438
435
                    continue;
439
436
                }
440
437
                $usersgroups = array_keys($usersgroups);
441
 
                $intersect = array_intersect($usersgroups, $modinfo->groups[$cm->id]);
 
438
                $intersect = array_intersect($usersgroups, $modinfo->get_groups($cm->groupingid));
442
439
                if (empty($intersect)) {
443
440
                    continue;
444
441
                }
457
454
        $tmpactivity->content->feedbackid = $feedbackitem->id;
458
455
        $tmpactivity->content->feedbackuserid = $feedbackitem->userid;
459
456
 
460
 
        $userfields = explode(',', user_picture::fields());
461
 
        $tmpactivity->user = new stdClass();
462
 
        foreach ($userfields as $userfield) {
463
 
            if ($userfield == 'id') {
464
 
                $tmpactivity->user->{$userfield} = $feedbackitem->userid; // aliased in SQL above
465
 
            } else {
466
 
                if (!empty($feedbackitem->{$userfield})) {
467
 
                    $tmpactivity->user->{$userfield} = $feedbackitem->{$userfield};
468
 
                } else {
469
 
                    $tmpactivity->user->{$userfield} = null;
470
 
                }
471
 
            }
472
 
        }
 
457
        $tmpactivity->user = user_picture::unalias($feedbackitem, null, 'useridagain');
473
458
        $tmpactivity->user->fullname = fullname($feedbackitem, $viewfullnames);
474
459
 
475
460
        $activities[$index++] = $tmpactivity;
1127
1112
    //if the template is public the files are in the system context
1128
1113
    //files in the feedback_item are in the feedback_context of the feedback
1129
1114
    if ($ispublic) {
1130
 
        $s_context = get_system_context();
 
1115
        $s_context = context_system::instance();
1131
1116
    } else {
1132
1117
        $s_context = context_course::instance($newtempl->course);
1133
1118
    }
1232
1217
    //files in the template_item are in the context of the current course
1233
1218
    //files in the feedback_item are in the feedback_context of the feedback
1234
1219
    if ($template->ispublic) {
1235
 
        $s_context = get_system_context();
 
1220
        $s_context = context_system::instance();
1236
1221
    } else {
1237
1222
        $s_context = context_course::instance($feedback->course);
1238
1223
    }
1535
1520
 
1536
1521
    if ($template) {
1537
1522
        if ($template->ispublic) {
1538
 
            $context = get_system_context();
 
1523
            $context = context_system::instance();
1539
1524
        } else {
1540
1525
            $context = context_course::instance($template->course);
1541
1526
        }
1906
1891
    //drop all the tmpvalues
1907
1892
    $DB->delete_records('feedback_valuetmp', array('completed'=>$tmpcplid));
1908
1893
    $DB->delete_records('feedback_completedtmp', array('id'=>$tmpcplid));
 
1894
 
 
1895
    // Trigger event for the delete action we performed.
 
1896
    $cm = get_coursemodule_from_instance('feedback', $feedbackcompleted->feedback);
 
1897
    $event = \mod_feedback\event\response_submitted::create(array(
 
1898
        'relateduserid' => $userid,
 
1899
        'objectid' => $feedbackcompleted->id,
 
1900
        'context' => context_module::instance($cm->id),
 
1901
        'other' => array(
 
1902
            'cmid' => $cm->id,
 
1903
            'instanceid' => $feedbackcompleted->feedback,
 
1904
            'anonymous' => $feedbackcompleted->anonymous_response
 
1905
        )
 
1906
    ));
 
1907
 
 
1908
    $event->add_record_snapshot('feedback_completed', $feedbackcompleted);
 
1909
 
 
1910
    $event->trigger();
1909
1911
    return $feedbackcompleted->id;
1910
1912
 
1911
1913
}
2390
2392
 
2391
2393
    //if the groupid is given?
2392
2394
    if (intval($groupid) > 0) {
 
2395
        $params = array();
2393
2396
        if ($ignore_empty) {
2394
 
            $ignore_empty_select = "AND fbv.value != '' AND fbv.value != '0'";
 
2397
            $value = $DB->sql_compare_text('fbv.value');
 
2398
            $ignore_empty_select = "AND $value != :emptyvalue AND $value != :zerovalue";
 
2399
            $params += array('emptyvalue' => '', 'zerovalue' => '0');
2395
2400
        } else {
2396
2401
            $ignore_empty_select = "";
2397
2402
        }
2398
2403
 
2399
2404
        $query = 'SELECT fbv .  *
2400
2405
                    FROM {feedback_value} fbv, {feedback_completed} fbc, {groups_members} gm
2401
 
                   WHERE fbv.item = ?
 
2406
                   WHERE fbv.item = :itemid
2402
2407
                         AND fbv.completed = fbc.id
2403
2408
                         AND fbc.userid = gm.userid
2404
2409
                         '.$ignore_empty_select.'
2405
 
                         AND gm.groupid = ?
 
2410
                         AND gm.groupid = :groupid
2406
2411
                ORDER BY fbc.timemodified';
2407
 
        $values = $DB->get_records_sql($query, array($item->id, $groupid));
 
2412
        $params += array('itemid' => $item->id, 'groupid' => $groupid);
 
2413
        $values = $DB->get_records_sql($query, $params);
2408
2414
 
2409
2415
    } else {
 
2416
        $params = array();
2410
2417
        if ($ignore_empty) {
2411
 
            $ignore_empty_select = "AND value != '' AND value != '0'";
 
2418
            $value = $DB->sql_compare_text('value');
 
2419
            $ignore_empty_select = "AND $value != :emptyvalue AND $value != :zerovalue";
 
2420
            $params += array('emptyvalue' => '', 'zerovalue' => '0');
2412
2421
        } else {
2413
2422
            $ignore_empty_select = "";
2414
2423
        }
2415
2424
 
2416
2425
        if ($courseid) {
2417
 
            $select = "item = ? AND course_id = ? ".$ignore_empty_select;
2418
 
            $params = array($item->id, $courseid);
 
2426
            $select = "item = :itemid AND course_id = :courseid ".$ignore_empty_select;
 
2427
            $params += array('itemid' => $item->id, 'courseid' => $courseid);
2419
2428
            $values = $DB->get_records_select('feedback_value', $select, $params);
2420
2429
        } else {
2421
 
            $select = "item = ? ".$ignore_empty_select;
2422
 
            $params = array($item->id);
 
2430
            $select = "item = :itemid ".$ignore_empty_select;
 
2431
            $params += array('itemid' => $item->id);
2423
2432
            $values = $DB->get_records_select('feedback_value', $select, $params);
2424
2433
        }
2425
2434
    }
2660
2669
    if ($completion->is_enabled($cm) && $feedback->completionsubmit) {
2661
2670
        $completion->update_state($cm, COMPLETION_INCOMPLETE, $completed->userid);
2662
2671
    }
2663
 
    //last we delete the completed-record
2664
 
    return $DB->delete_records('feedback_completed', array('id'=>$completed->id));
 
2672
    // Last we delete the completed-record.
 
2673
    $return = $DB->delete_records('feedback_completed', array('id'=>$completed->id));
 
2674
 
 
2675
    // Trigger event for the delete action we performed.
 
2676
    $event = \mod_feedback\event\response_deleted::create(array(
 
2677
        'relateduserid' => $completed->userid,
 
2678
        'objectid' => $completedid,
 
2679
        'courseid' => $course->id,
 
2680
        'context' => context_module::instance($cm->id),
 
2681
        'other' => array('cmid' => $cm->id, 'instanceid' => $feedback->id, 'anonymous' => $completed->anonymous_response)
 
2682
    ));
 
2683
 
 
2684
    $event->add_record_snapshot('feedback_completed', $completed);
 
2685
    $event->add_record_snapshot('course', $course);
 
2686
    $event->add_record_snapshot('feedback', $feedback);
 
2687
 
 
2688
    $event->trigger();
 
2689
 
 
2690
    return $return;
2665
2691
}
2666
2692
 
2667
2693
////////////////////////////////////////////////