Пример #1
0
/**
 * @global object
 * @global object
 * @param object $coure
 * @param object $user
 * @param object $mod
 * @param object $forum
 */
function hsuforum_user_complete($course, $user, $mod, $forum)
{
    global $CFG, $PAGE, $OUTPUT;
    require_once "{$CFG->libdir}/gradelib.php";
    $grades = grade_get_grades($course->id, 'mod', 'hsuforum', $forum->id, $user->id);
    if (!empty($grades->items[0]->grades)) {
        $grade = reset($grades->items[0]->grades);
        echo $OUTPUT->container(get_string('grade') . ': ' . $grade->str_long_grade);
        if ($grade->str_feedback) {
            echo $OUTPUT->container(get_string('feedback') . ': ' . $grade->str_feedback);
        }
    }
    if ($posts = hsuforum_get_user_posts($forum->id, $user->id)) {
        if (!($cm = get_coursemodule_from_instance('hsuforum', $forum->id, $course->id))) {
            print_error('invalidcoursemodule');
        }
        $discussions = hsuforum_get_user_involved_discussions($forum->id, $user->id);
        foreach ($posts as $post) {
            if (!isset($discussions[$post->discussion])) {
                continue;
            }
            $discussion = $discussions[$post->discussion];
            $renderer = $PAGE->get_renderer('mod_hsuforum');
            echo $renderer->post($cm, $discussion, $post, false, null, false);
        }
    } else {
        echo "<p>" . get_string("noposts", "hsuforum") . "</p>";
    }
}
Пример #2
0
 /**
  * @param $userid
  * @param $cm
  * @param null|stdClass $showonlypreference
  *
  * @return string
  * @author Mark Nielsen
  */
 public function user_posts_overview($userid, $cm, $showonlypreference = null)
 {
     global $PAGE;
     require_once __DIR__ . '/lib/flag.php';
     $config = get_config('hsuforum');
     $forum = hsuforum_get_cm_forum($cm);
     $showonlypreferencebutton = '';
     if (!empty($showonlypreference) and !empty($showonlypreference->button) and !$forum->anonymous) {
         $showonlypreferencebutton = $showonlypreference->button;
     }
     $output = '';
     $postcount = $discussioncount = $flagcount = 0;
     $flaglib = new hsuforum_lib_flag();
     if ($posts = hsuforum_get_user_posts($forum->id, $userid, context_module::instance($cm->id))) {
         $discussions = hsuforum_get_user_involved_discussions($forum->id, $userid);
         if (!empty($showonlypreference) and !empty($showonlypreference->preference)) {
             foreach ($discussions as $discussion) {
                 if ($discussion->userid == $userid and array_key_exists($discussion->firstpost, $posts)) {
                     $discussionpost = $posts[$discussion->firstpost];
                     $discussioncount++;
                     if ($flaglib->is_flagged($discussionpost->flags, 'substantive')) {
                         $flagcount++;
                     }
                 } else {
                     if (!($discussionpost = hsuforum_get_post_full($discussion->firstpost))) {
                         continue;
                     }
                 }
                 if (!$forum->anonymous) {
                     $output .= $this->post($cm, $discussion, $discussionpost, false, null, false);
                     $output .= html_writer::start_tag('div', array('class' => 'indent'));
                 }
                 foreach ($posts as $post) {
                     if ($post->discussion == $discussion->id and !empty($post->parent)) {
                         $postcount++;
                         if ($flaglib->is_flagged($post->flags, 'substantive')) {
                             $flagcount++;
                         }
                         $command = html_writer::link(new moodle_url('/mod/hsuforum/discuss.php', array('d' => $discussion->id), 'p' . $post->id), get_string('postincontext', 'hsuforum'), array('target' => '_blank'));
                         if (!$forum->anonymous) {
                             $output .= $this->post($cm, $discussion, $post, false, null, false);
                         }
                     }
                 }
                 if (!$forum->anonymous) {
                     $output .= html_writer::end_tag('div');
                 }
             }
         } else {
             foreach ($posts as $post) {
                 if (!empty($post->parent)) {
                     $postcount++;
                 } else {
                     $discussioncount++;
                 }
                 if ($flaglib->is_flagged($post->flags, 'substantive')) {
                     $flagcount++;
                 }
                 if (!$forum->anonymous) {
                     $command = html_writer::link(new moodle_url('/mod/hsuforum/discuss.php', array('d' => $post->discussion), 'p' . $post->id), get_string('postincontext', 'hsuforum'), array('target' => '_blank'));
                     $output .= $this->post($cm, $discussions[$post->discussion], $post, false, null, false);
                 }
             }
         }
     }
     if (!empty($postcount) or !empty($discussioncount)) {
         if ($forum->anonymous) {
             $output = html_writer::tag('h3', get_string('thisisanonymous', 'hsuforum'));
         }
         $counts = array(get_string('totalpostsanddiscussions', 'hsuforum', $discussioncount + $postcount), get_string('totaldiscussions', 'hsuforum', $discussioncount), get_string('totalreplies', 'hsuforum', $postcount));
         if (!empty($config->showsubstantive)) {
             $counts[] = get_string('totalsubstantive', 'hsuforum', $flagcount);
         }
         if ($grade = hsuforum_get_user_formatted_rating_grade($forum, $userid)) {
             $counts[] = get_string('totalrating', 'hsuforum', $grade);
         }
         $countshtml = '';
         foreach ($counts as $count) {
             $countshtml .= html_writer::tag('div', $count, array('class' => 'hsuforum_count'));
         }
         $output = html_writer::div($countshtml, 'hsuforum_counts') . $showonlypreferencebutton . $output;
         $output = html_writer::div($output, 'mod-hsuforum-posts-container article');
     }
     return $output;
 }