本文整理汇总了PHP中forum::set_clone_reference方法的典型用法代码示例。如果您正苦于以下问题:PHP forum::set_clone_reference方法的具体用法?PHP forum::set_clone_reference怎么用?PHP forum::set_clone_reference使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类forum
的用法示例。
在下文中一共展示了forum::set_clone_reference方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: while
/**
*
* @param forum $forum Forum
* @param object $cm Course-module object
* @param object $context Context object
* @param object $course Course object
*/
function next_forum(&$forum, &$cm, &$context, &$course)
{
// Skip if required to get to new forum
while ($this->forum != null) {
$this->next_discussion($discussion);
}
// Get record
if ($this->storedrecord) {
$record = $this->storedrecord;
$this->storedrecord = null;
} else {
if (!$this->rs) {
// Already used entire list and closed recordset
return false;
} else {
$record = rs_fetch_next_record($this->rs);
if (!$record) {
// End of the line. Mark everything as mailed
$this->mark_mailed($this->time);
rs_close($this->rs);
$this->rs = null;
return false;
}
}
}
// Set data
$this->storedrecord = clone $record;
$cm = forum_utils::extract_subobject($record, 'cm_');
$course = forum_utils::extract_subobject($record, 'c_');
$context = forum_utils::extract_subobject($record, 'x_');
$forum = new forum($course, $cm, $context, forum_utils::extract_subobject($record, 'f_'));
if ($forum->is_shared()) {
$forum->set_clone_reference($record->cloneid);
$cm = $forum->get_course_module();
$course = $forum->get_course();
$context = $forum->get_context();
}
$this->forum = $forum;
return true;
}
示例2: array
/**
* Queries for all forums on a course, including additional data about unread
* posts etc.
* NOTE: If shared forums are in use, this will usually return the CLONE
* forum object, which doesn't hold any data about the actual forum;
* the exception is that unread data will be obtained from the real forum.
* If you would like to obtain the real forum instead, please make sure
* $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
//.........这里部分代码省略.........