本文整理汇总了PHP中forum::init_unread_from_original方法的典型用法代码示例。如果您正苦于以下问题:PHP forum::init_unread_from_original方法的具体用法?PHP forum::init_unread_from_original怎么用?PHP forum::init_unread_from_original使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类forum
的用法示例。
在下文中一共展示了forum::init_unread_from_original方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: array
//.........这里部分代码省略.........
* $realforums is set to true. This has a performance cost.
* @param object $course Moodle course object
* @param int $userid User ID, 0 = current user, -1 = no unread data is needed
* @param bool $unreadasbinary If true, unread data MAY BE binary (1/0)
* instead of containing the full number; this improves performance but
* only works on some databases
* @param array $specificids If array has no entries, returns all forums
* on the course; if it has at least one entry, returns only those forums
* with course-module ID listed in the array
* @param bool $realforums Set this to true to obtain real forums
* if any are clones; has a performance cost if shared forums are used
* @return array Array of forum objects (keys are forum IDs; in the case of
* shared forums, the id is of the clone not the forum, even if
* $realforums is set)
*/
static function get_course_forums($course, $userid = 0, $unread = self::UNREAD_DISCUSSIONS, $specificids = array(), $realforums = false)
{
global $USER, $CFG;
$userid = forum_utils::get_real_userid($userid);
$result = array();
$modinfo = self::get_modinfo_special($course, $specificids);
// Obtains extra information needed only when acquiring unread data
$aagforums = array();
$viewhiddenforums = array();
$groups = array();
if ($unread != self::UNREAD_NONE) {
foreach ($modinfo->cms as $cmid => $cm) {
if (count($specificids) && !in_array($cmid, $specificids)) {
continue;
}
$context = get_context_instance(CONTEXT_MODULE, $cmid);
if ($cm->modname == 'forumng') {
if (has_capability('moodle/site:accessallgroups', $context, $userid)) {
$aagforums[] = $cm->instance;
}
if (has_capability('mod/forumng:viewallposts', $context, $userid)) {
$viewhiddenforums[] = $cm->instance;
}
}
}
if ($userid == $USER->id) {
if (array_key_exists($course->id, $USER->groupmember)) {
$groups = $USER->groupmember[$course->id];
}
// Else do nothing - groups list should be empty
} else {
$rs = forum_utils::get_recordset_sql("\nSELECT\n g.id\nFROM\n {$CFG->prefix}groups g\n INNER JOIN {$CFG->prefix}groups_members gm ON g.id=gm.groupid\nWHERE\n g.courseid = {$course->id}\n AND gm.userid = {$userid}");
while ($rec = rs_fetch_next_record($rs)) {
$groups[] = $rec->id;
}
rs_close($rs);
}
}
$rows = self::query_forums($specificids, $course, $userid, $unread, $groups, $aagforums, $viewhiddenforums);
foreach ($rows as $rec) {
// Check course-module exists
if (!array_key_exists($rec->cm_id, $modinfo->cms)) {
continue;
}
$cm = $modinfo->cms[$rec->cm_id];
if ($cm->modname != 'forumng') {
continue;
}
// Mess about with binary setting to ensure result is same, whatever
// the database
if ($unread == self::UNREAD_BINARY && isset($rec->f_numunreaddiscussions)) {
$rec->f_hasunreaddiscussions = $rec->f_numunreaddiscussions > 0 ? 1 : 0;
unset($rec->f_numunreaddiscussions);
}
// Create a new forum object from the database details
$forumfields = forum_utils::extract_subobject($rec, 'f_');
$forum = new forum($course, $cm, get_context_instance(CONTEXT_MODULE, $cm->id), $forumfields);
$result[$forumfields->id] = $forum;
if ($forum->is_shared()) {
$forum->set_clone_reference(self::CLONE_DIRECT);
}
// For clone forums (only pointers to genuine shared forums)
if ($forum->is_clone()) {
// If we are retrieving the real forum, get it individually
if ($realforums) {
$othercourse = forum_utils::get_record_sql("\nSELECT\n c.*\nFROM\n {$CFG->prefix}course_modules cm\n INNER JOIN {$CFG->prefix}course c ON c.id = cm.course\nWHERE\n cm.id = {$forumfields->originalcmid}");
$extra = self::get_course_forums($othercourse, $userid, $unread, array($forumfields->originalcmid));
if (count($extra) != 1) {
throw new forum_exception('Unable to find shared forum ' . $forumfields->originalcmid);
}
foreach ($extra as $extraforum) {
$extraforum->set_clone_reference($cm->id);
$result[$forumfields->id] = $extraforum;
}
} else {
if ($unread != self::UNREAD_NONE) {
// Even if not retrieving the real forum, we still use
// its undead data when unread data is on
$forum->init_unread_from_original($unread);
}
}
}
}
return $result;
}