$button = ' '; $buttonextraclass = ' noavailable'; } echo html_writer::tag('div', $button, array('class' => 'discussioncontrol exporttoportfolio' . $buttonextraclass)); } if ($course->format != 'singleactivity' && $forum->type != 'single' && local::cached_has_capability('mod/hsuforum:movediscussions', $modcontext)) { echo '<div class="discussioncontrol movediscussion">'; // Popup menu to move discussions to other forums. The discussion in a // single discussion forum can't be moved. $modinfo = get_fast_modinfo($course); if (isset($modinfo->instances['hsuforum'])) { $forummenu = array(); // Check forum types and eliminate simple discussions. $forumcheck = $DB->get_records('hsuforum', array('course' => $course->id), '', 'id, type'); foreach ($modinfo->instances['hsuforum'] as $forumcm) { if (!$forumcm->uservisible || !local::cached_has_capability('mod/hsuforum:startdiscussion', context_module::instance($forumcm->id))) { continue; } $section = $forumcm->sectionnum; $sectionname = get_section_name($course, $section); if (empty($forummenu[$section])) { $forummenu[$section] = array($sectionname => array()); } $forumidcompare = $forumcm->instance != $forum->id; $forumtypecheck = $forumcheck[$forumcm->instance]->type !== 'single'; if ($forumidcompare and $forumtypecheck) { $url = "/mod/hsuforum/discuss.php?d={$discussion->id}&move={$forumcm->instance}&sesskey=" . sesskey(); $forummenu[$section][$sectionname][$url] = format_string($forumcm->name); } } }
/** * Given a user, return post user that is ready for display (EG: * anonymous is enforced as well as highlighting) * * @param object $user * @param object $post * @param object $forum * @param context_module $context * @return stdClass */ function hsuforum_get_postuser($user, $post, $forum, context_module $context) { static $cache = []; if (empty($forum->anonymous) or !empty($post->reveal)) { if (isset($cache[$user->id])) { return $cache[$user->id]; } } $postuser = hsuforum_anonymize_user($user, $forum, $post); if (property_exists($user, 'picture')) { $postuser->user_picture = new user_picture($postuser); $postuser->user_picture->courseid = $forum->course; $postuser->user_picture->link = !hsuforum_is_anonymous_user($postuser); } $postuser->fullname = fullname($postuser, \mod_hsuforum\local::cached_has_capability('moodle/site:viewfullnames', $context)); if (empty($forum->anonymous) or !empty($post->reveal)) { $cache[$user->id] = $postuser; } return $postuser; }
/** * @param stdClass $post * @param stdClass $discussion * @param stdClass $cm * @param bool $canreply * @return array * @throws coding_exception * @author Mark Nielsen */ public function post_get_commands($post, $discussion, $cm, $canreply) { global $CFG, $USER; $discussionlink = new moodle_url('/mod/hsuforum/discuss.php', array('d' => $post->discussion)); $ownpost = (isloggedin() and $post->userid == $USER->id); $commands = array(); if (!property_exists($post, 'privatereply')) { throw new coding_exception('Must set post\'s privatereply property!'); } $forum = hsuforum_get_cm_forum($cm); if ($canreply and empty($post->privatereply)) { $postuser = hsuforum_extract_postuser($post, $forum, context_module::instance($cm->id)); $replytitle = get_string('replybuttontitle', 'hsuforum', strip_tags($postuser->fullname)); $commands['reply'] = html_writer::link(new moodle_url('/mod/hsuforum/post.php', array('reply' => $post->id)), get_string('reply', 'hsuforum'), array('title' => $replytitle, 'class' => 'hsuforum-reply-link btn btn-default')); } // Hack for allow to edit news posts those are not displayed yet until they are displayed $age = time() - $post->created; if (!$post->parent && $forum->type == 'news' && $discussion->timestart > time()) { $age = 0; } if ($ownpost && $age < $CFG->maxeditingtime || local::cached_has_capability('mod/hsuforum:editanypost', context_module::instance($cm->id))) { $commands['edit'] = html_writer::link(new moodle_url('/mod/hsuforum/post.php', array('edit' => $post->id)), get_string('edit', 'hsuforum')); } if ($ownpost && $age < $CFG->maxeditingtime && local::cached_has_capability('mod/hsuforum:deleteownpost', context_module::instance($cm->id)) || local::cached_has_capability('mod/hsuforum:deleteanypost', context_module::instance($cm->id))) { $commands['delete'] = html_writer::link(new moodle_url('/mod/hsuforum/post.php', array('delete' => $post->id)), get_string('delete', 'hsuforum')); } if (local::cached_has_capability('mod/hsuforum:splitdiscussions', context_module::instance($cm->id)) && $post->parent && !$post->privatereply && $forum->type != 'single') { $commands['split'] = html_writer::link(new moodle_url('/mod/hsuforum/post.php', array('prune' => $post->id)), get_string('prune', 'hsuforum'), array('title' => get_string('pruneheading', 'hsuforum'))); } if ($CFG->enableportfolios && empty($forum->anonymous) && (local::cached_has_capability('mod/hsuforum:exportpost', context_module::instance($cm->id)) || $ownpost && local::cached_has_capability('mod/hsuforum:exportownpost', context_module::instance($cm->id)))) { require_once $CFG->libdir . '/portfoliolib.php'; $button = new portfolio_add_button(); $button->set_callback_options('hsuforum_portfolio_caller', array('postid' => $post->id), 'mod_hsuforum'); list($attachments, $attachedimages) = hsuforum_print_attachments($post, $cm, 'separateimages'); if (empty($attachments)) { $button->set_formats(PORTFOLIO_FORMAT_PLAINHTML); } else { $button->set_formats(PORTFOLIO_FORMAT_RICHHTML); } $porfoliohtml = $button->to_html(PORTFOLIO_ADD_TEXT_LINK); if (!empty($porfoliohtml)) { $commands['portfolio'] = $porfoliohtml; } } $rating = $this->post_rating($post); if (!empty($rating)) { $commands['rating'] = $rating; } return $commands; }