示例#1
0
文件: lib.php 项目: hitphp/moodle
/**
 * For a given course, returns an array of course activity objects
 * Each item in the array contains he following properties:
 */
function get_array_of_activities($courseid)
{
    //  cm - course module id
    //  mod - name of the module (eg forum)
    //  section - the number of the section (eg week or topic)
    //  name - the name of the instance
    //  visible - is the instance visible or not
    //  groupingid - grouping id
    //  groupmembersonly - is this instance visible to group members only
    //  extra - contains extra string to include in any link
    global $CFG, $DB;
    if (!empty($CFG->enableavailability)) {
        require_once $CFG->libdir . '/conditionlib.php';
    }
    $course = $DB->get_record('course', array('id' => $courseid));
    if (empty($course)) {
        throw new moodle_exception('courseidnotfound');
    }
    $mod = array();
    $rawmods = get_course_mods($courseid);
    if (empty($rawmods)) {
        return $mod;
        // always return array
    }
    if ($sections = $DB->get_records("course_sections", array("course" => $courseid), "section ASC")) {
        foreach ($sections as $section) {
            if (!empty($section->sequence)) {
                $sequence = explode(",", $section->sequence);
                foreach ($sequence as $seq) {
                    if (empty($rawmods[$seq])) {
                        continue;
                    }
                    $mod[$seq]->id = $rawmods[$seq]->instance;
                    $mod[$seq]->cm = $rawmods[$seq]->id;
                    $mod[$seq]->mod = $rawmods[$seq]->modname;
                    $mod[$seq]->section = $section->section;
                    $mod[$seq]->idnumber = $rawmods[$seq]->idnumber;
                    $mod[$seq]->visible = $rawmods[$seq]->visible;
                    $mod[$seq]->groupmode = $rawmods[$seq]->groupmode;
                    $mod[$seq]->groupingid = $rawmods[$seq]->groupingid;
                    $mod[$seq]->groupmembersonly = $rawmods[$seq]->groupmembersonly;
                    $mod[$seq]->indent = $rawmods[$seq]->indent;
                    $mod[$seq]->completion = $rawmods[$seq]->completion;
                    $mod[$seq]->extra = "";
                    if (!empty($CFG->enableavailability)) {
                        condition_info::fill_availability_conditions($rawmods[$seq]);
                        $mod[$seq]->availablefrom = $rawmods[$seq]->availablefrom;
                        $mod[$seq]->availableuntil = $rawmods[$seq]->availableuntil;
                        $mod[$seq]->showavailability = $rawmods[$seq]->showavailability;
                        $mod[$seq]->conditionscompletion = $rawmods[$seq]->conditionscompletion;
                        $mod[$seq]->conditionsgrade = $rawmods[$seq]->conditionsgrade;
                    }
                    $modname = $mod[$seq]->mod;
                    $functionname = $modname . "_get_coursemodule_info";
                    if (!file_exists("{$CFG->dirroot}/mod/{$modname}/lib.php")) {
                        continue;
                    }
                    include_once "{$CFG->dirroot}/mod/{$modname}/lib.php";
                    if (function_exists($functionname)) {
                        if ($info = $functionname($rawmods[$seq])) {
                            if (!empty($info->icon)) {
                                $mod[$seq]->icon = $info->icon;
                            }
                            if (!empty($info->iconcomponent)) {
                                $mod[$seq]->iconcomponent = $info->iconcomponent;
                            }
                            if (!empty($info->name)) {
                                $mod[$seq]->name = $info->name;
                            }
                            if ($info instanceof cached_cm_info) {
                                // When using cached_cm_info you can include three new fields
                                // that aren't available for legacy code
                                if (!empty($info->content)) {
                                    $mod[$seq]->content = $info->content;
                                }
                                if (!empty($info->extraclasses)) {
                                    $mod[$seq]->extraclasses = $info->extraclasses;
                                }
                                if (!empty($info->onclick)) {
                                    $mod[$seq]->onclick = $info->onclick;
                                }
                                if (!empty($info->customdata)) {
                                    $mod[$seq]->customdata = $info->customdata;
                                }
                            } else {
                                // When using a stdclass, the (horrible) deprecated ->extra field
                                // is available for BC
                                if (!empty($info->extra)) {
                                    $mod[$seq]->extra = $info->extra;
                                }
                            }
                        }
                    }
                    if (!isset($mod[$seq]->name)) {
                        $mod[$seq]->name = $DB->get_field($rawmods[$seq]->modname, "name", array("id" => $rawmods[$seq]->instance));
                    }
                    // Minimise the database size by unsetting default options when they are
                    // 'empty'. This list corresponds to code in the cm_info constructor.
                    foreach (array('idnumber', 'groupmode', 'groupingid', 'groupmembersonly', 'indent', 'completion', 'extra', 'extraclasses', 'onclick', 'content', 'icon', 'iconcomponent', 'customdata', 'availablefrom', 'availableuntil', 'conditionscompletion', 'conditionsgrade') as $property) {
                        if (property_exists($mod[$seq], $property) && empty($mod[$seq]->{$property})) {
                            unset($mod[$seq]->{$property});
                        }
                    }
                }
            }
        }
    }
    return $mod;
}
示例#2
0
文件: lib.php 项目: numbas/moodle
/**
 * For a given course, returns an array of course activity objects
 * Each item in the array contains he following properties:
 */
function get_array_of_activities($courseid)
{
    //  cm - course module id
    //  mod - name of the module (eg forum)
    //  section - the number of the section (eg week or topic)
    //  name - the name of the instance
    //  visible - is the instance visible or not
    //  groupingid - grouping id
    //  groupmembersonly - is this instance visible to group members only
    //  extra - contains extra string to include in any link
    global $CFG, $DB;
    if (!empty($CFG->enableavailability)) {
        require_once $CFG->libdir . '/conditionlib.php';
    }
    $course = $DB->get_record('course', array('id' => $courseid));
    if (empty($course)) {
        throw new moodle_exception('courseidnotfound');
    }
    $mod = array();
    $rawmods = get_course_mods($courseid);
    if (empty($rawmods)) {
        return $mod;
        // always return array
    }
    if ($sections = $DB->get_records("course_sections", array("course" => $courseid), "section ASC")) {
        foreach ($sections as $section) {
            if (!empty($section->sequence)) {
                $sequence = explode(",", $section->sequence);
                foreach ($sequence as $seq) {
                    if (empty($rawmods[$seq])) {
                        continue;
                    }
                    $mod[$seq] = new stdClass();
                    $mod[$seq]->id = $rawmods[$seq]->instance;
                    $mod[$seq]->cm = $rawmods[$seq]->id;
                    $mod[$seq]->mod = $rawmods[$seq]->modname;
                    // Oh dear. Inconsistent names left here for backward compatibility.
                    $mod[$seq]->section = $section->section;
                    $mod[$seq]->sectionid = $rawmods[$seq]->section;
                    $mod[$seq]->module = $rawmods[$seq]->module;
                    $mod[$seq]->added = $rawmods[$seq]->added;
                    $mod[$seq]->score = $rawmods[$seq]->score;
                    $mod[$seq]->idnumber = $rawmods[$seq]->idnumber;
                    $mod[$seq]->visible = $rawmods[$seq]->visible;
                    $mod[$seq]->visibleold = $rawmods[$seq]->visibleold;
                    $mod[$seq]->groupmode = $rawmods[$seq]->groupmode;
                    $mod[$seq]->groupingid = $rawmods[$seq]->groupingid;
                    $mod[$seq]->groupmembersonly = $rawmods[$seq]->groupmembersonly;
                    $mod[$seq]->indent = $rawmods[$seq]->indent;
                    $mod[$seq]->completion = $rawmods[$seq]->completion;
                    $mod[$seq]->extra = "";
                    $mod[$seq]->completiongradeitemnumber = $rawmods[$seq]->completiongradeitemnumber;
                    $mod[$seq]->completionview = $rawmods[$seq]->completionview;
                    $mod[$seq]->completionexpected = $rawmods[$seq]->completionexpected;
                    $mod[$seq]->availablefrom = $rawmods[$seq]->availablefrom;
                    $mod[$seq]->availableuntil = $rawmods[$seq]->availableuntil;
                    $mod[$seq]->showavailability = $rawmods[$seq]->showavailability;
                    $mod[$seq]->showdescription = $rawmods[$seq]->showdescription;
                    if (!empty($CFG->enableavailability)) {
                        condition_info::fill_availability_conditions($rawmods[$seq]);
                        $mod[$seq]->conditionscompletion = $rawmods[$seq]->conditionscompletion;
                        $mod[$seq]->conditionsgrade = $rawmods[$seq]->conditionsgrade;
                    }
                    $modname = $mod[$seq]->mod;
                    $functionname = $modname . "_get_coursemodule_info";
                    if (!file_exists("{$CFG->dirroot}/mod/{$modname}/lib.php")) {
                        continue;
                    }
                    include_once "{$CFG->dirroot}/mod/{$modname}/lib.php";
                    if ($hasfunction = function_exists($functionname)) {
                        if ($info = $functionname($rawmods[$seq])) {
                            if (!empty($info->icon)) {
                                $mod[$seq]->icon = $info->icon;
                            }
                            if (!empty($info->iconcomponent)) {
                                $mod[$seq]->iconcomponent = $info->iconcomponent;
                            }
                            if (!empty($info->name)) {
                                $mod[$seq]->name = $info->name;
                            }
                            if ($info instanceof cached_cm_info) {
                                // When using cached_cm_info you can include three new fields
                                // that aren't available for legacy code
                                if (!empty($info->content)) {
                                    $mod[$seq]->content = $info->content;
                                }
                                if (!empty($info->extraclasses)) {
                                    $mod[$seq]->extraclasses = $info->extraclasses;
                                }
                                if (!empty($info->iconurl)) {
                                    $mod[$seq]->iconurl = $info->iconurl;
                                }
                                if (!empty($info->onclick)) {
                                    $mod[$seq]->onclick = $info->onclick;
                                }
                                if (!empty($info->customdata)) {
                                    $mod[$seq]->customdata = $info->customdata;
                                }
                            } else {
                                // When using a stdclass, the (horrible) deprecated ->extra field
                                // is available for BC
                                if (!empty($info->extra)) {
                                    $mod[$seq]->extra = $info->extra;
                                }
                            }
                        }
                    }
                    // When there is no modname_get_coursemodule_info function,
                    // but showdescriptions is enabled, then we use the 'intro'
                    // and 'introformat' fields in the module table
                    if (!$hasfunction && $rawmods[$seq]->showdescription) {
                        if ($modvalues = $DB->get_record($rawmods[$seq]->modname, array('id' => $rawmods[$seq]->instance), 'name, intro, introformat')) {
                            // Set content from intro and introformat. Filters are disabled
                            // because we  filter it with format_text at display time
                            $mod[$seq]->content = format_module_intro($rawmods[$seq]->modname, $modvalues, $rawmods[$seq]->id, false);
                            // To save making another query just below, put name in here
                            $mod[$seq]->name = $modvalues->name;
                        }
                    }
                    if (!isset($mod[$seq]->name)) {
                        $mod[$seq]->name = $DB->get_field($rawmods[$seq]->modname, "name", array("id" => $rawmods[$seq]->instance));
                    }
                    // Minimise the database size by unsetting default options when they are
                    // 'empty'. This list corresponds to code in the cm_info constructor.
                    foreach (array('idnumber', 'groupmode', 'groupingid', 'groupmembersonly', 'indent', 'completion', 'extra', 'extraclasses', 'iconurl', 'onclick', 'content', 'icon', 'iconcomponent', 'customdata', 'showavailability', 'availablefrom', 'availableuntil', 'conditionscompletion', 'conditionsgrade', 'completionview', 'completionexpected', 'score', 'showdescription') as $property) {
                        if (property_exists($mod[$seq], $property) && empty($mod[$seq]->{$property})) {
                            unset($mod[$seq]->{$property});
                        }
                    }
                    // Special case: this value is usually set to null, but may be 0
                    if (property_exists($mod[$seq], 'completiongradeitemnumber') && is_null($mod[$seq]->completiongradeitemnumber)) {
                        unset($mod[$seq]->completiongradeitemnumber);
                    }
                }
            }
        }
    }
    return $mod;
}
示例#3
0
文件: lib.php 项目: vuchannguyen/web
/**
 * For a given course, returns an array of course activity objects
 * Each item in the array contains he following properties:
 */
function get_array_of_activities($courseid)
{
    //  cm - course module id
    //  mod - name of the module (eg forum)
    //  section - the number of the section (eg week or topic)
    //  name - the name of the instance
    //  visible - is the instance visible or not
    //  groupingid - grouping id
    //  groupmembersonly - is this instance visible to group members only
    //  extra - contains extra string to include in any link
    global $CFG, $DB;
    if (!empty($CFG->enableavailability)) {
        require_once $CFG->libdir . '/conditionlib.php';
    }
    $course = $DB->get_record('course', array('id' => $courseid));
    if (empty($course)) {
        throw new moodle_exception('courseidnotfound');
    }
    $mod = array();
    $rawmods = get_course_mods($courseid);
    if (empty($rawmods)) {
        return $mod;
        // always return array
    }
    if ($sections = $DB->get_records("course_sections", array("course" => $courseid), "section ASC")) {
        foreach ($sections as $section) {
            if (!empty($section->sequence)) {
                $sequence = explode(",", $section->sequence);
                foreach ($sequence as $seq) {
                    if (empty($rawmods[$seq])) {
                        continue;
                    }
                    $mod[$seq]->id = $rawmods[$seq]->instance;
                    $mod[$seq]->cm = $rawmods[$seq]->id;
                    $mod[$seq]->mod = $rawmods[$seq]->modname;
                    $mod[$seq]->section = $section->section;
                    $mod[$seq]->idnumber = $rawmods[$seq]->idnumber;
                    $mod[$seq]->visible = $rawmods[$seq]->visible;
                    $mod[$seq]->groupmode = $rawmods[$seq]->groupmode;
                    $mod[$seq]->groupingid = $rawmods[$seq]->groupingid;
                    $mod[$seq]->groupmembersonly = $rawmods[$seq]->groupmembersonly;
                    $mod[$seq]->indent = $rawmods[$seq]->indent;
                    $mod[$seq]->completion = $rawmods[$seq]->completion;
                    $mod[$seq]->extra = "";
                    if (!empty($CFG->enableavailability)) {
                        condition_info::fill_availability_conditions($rawmods[$seq]);
                        $mod[$seq]->availablefrom = $rawmods[$seq]->availablefrom;
                        $mod[$seq]->availableuntil = $rawmods[$seq]->availableuntil;
                        $mod[$seq]->showavailability = $rawmods[$seq]->showavailability;
                        $mod[$seq]->conditionscompletion = $rawmods[$seq]->conditionscompletion;
                        $mod[$seq]->conditionsgrade = $rawmods[$seq]->conditionsgrade;
                    }
                    $modname = $mod[$seq]->mod;
                    $functionname = $modname . "_get_coursemodule_info";
                    if (!file_exists("{$CFG->dirroot}/mod/{$modname}/lib.php")) {
                        continue;
                    }
                    include_once "{$CFG->dirroot}/mod/{$modname}/lib.php";
                    if (function_exists($functionname)) {
                        if ($info = $functionname($rawmods[$seq])) {
                            if (!empty($info->extra)) {
                                $mod[$seq]->extra = $info->extra;
                            }
                            if (!empty($info->icon)) {
                                $mod[$seq]->icon = $info->icon;
                            }
                            if (!empty($info->iconcomponent)) {
                                $mod[$seq]->iconcomponent = $info->iconcomponent;
                            }
                            if (!empty($info->name)) {
                                $mod[$seq]->name = $info->name;
                            }
                        }
                    }
                    if (!isset($mod[$seq]->name)) {
                        $mod[$seq]->name = $DB->get_field($rawmods[$seq]->modname, "name", array("id" => $rawmods[$seq]->instance));
                    }
                }
            }
        }
    }
    return $mod;
}