Ejemplo n.º 1
0
function ouwiki_update_instance($data, $mform)
{
    global $CFG, $DB;
    $data->id = $data->instance;
    // Update main record.
    $DB->update_record('ouwiki', $data);
    // Set up null values
    $nullvalues = array('editbegin', 'editend', 'timeout');
    foreach ($nullvalues as $nullvalue) {
        if (empty($data->{$nullvalue})) {
            unset($data->{$nullvalue});
            $DB->set_field('ouwiki', $nullvalue, null, array('id' => $data->id));
        }
    }
    if (strlen(preg_replace('/(<.*?>)|(&.*?;)|\\s/', '', $data->intro)) == 0) {
        unset($data->intro);
        $DB->set_field('ouwiki', 'intro', null, array('id' => $data->id));
    }
    ouwiki_grade_item_update($data);
    if (!($cm = get_coursemodule_from_id('ouwiki', $data->coursemodule))) {
        print_error('invalidcoursemodule');
    }
    // Checking course instance.
    $course = $DB->get_record('course', array('id' => $data->course), '*', MUST_EXIST);
    if ($filename = $mform->get_new_filename('template_file')) {
        // Delete any previous template files.
        $cmid = $data->coursemodule;
        $context = context_module::instance($cmid);
        $fs = get_file_storage();
        $fs->delete_area_files($context->id, 'mod_ouwiki', 'template', $data->id);
        // Add template file.
        $file = $mform->save_stored_file('template_file', $context->id, 'mod_ouwiki', 'template', $data->id, '/', $filename);
        $DB->set_field('ouwiki', 'template', '/' . $file->get_filename(), array('id' => $data->id));
        // Check for empty wikis (i.e. wikis without a start page already created).
        $subwikis = ouwiki_get_subwikis($data->id);
        $ouwiki = $DB->get_record_select('ouwiki', 'id = ?', array($data->id));
        foreach ($subwikis as $subwiki) {
            if (!ouwiki_subwiki_content_exists($subwiki->id)) {
                // Amend any empty wikis from template.
                ouwiki_init_pages($course, $cm, $ouwiki, $subwiki);
            }
        }
    }
    return true;
}
Ejemplo n.º 2
0
         } else {
             $wikiob->selectordefault = $wikisubwiki->id;
         }
     }
 } else {
     if ($wikiinst->subwikis == OUWIKI_SUBWIKIS_GROUPS) {
         // Group wiki. Get all groups user can see (checking they have content to import).
         if (!($groups = groups_get_activity_allowed_groups($wikiact))) {
             continue;
         }
         $default = groups_get_activity_group($wikiact);
         foreach ($groups as $group) {
             // Check group subwiki has content before adding it.
             if ($wikisubwiki = $DB->get_record_select('ouwiki_subwikis', 'wikiid = ?
                 AND groupid = ? AND userid IS NULL', array($wikiinst->id, $group->id), 'id')) {
                 if (ouwiki_subwiki_content_exists($wikisubwiki->id)) {
                     $wikiob->selector[$wikisubwiki->id] = format_string($group->name);
                     if ($group->id == $default) {
                         $wikiob->selectordefault = $wikisubwiki->id;
                     }
                 }
             }
         }
         // If no groups have content disable wiki selector.
         if (empty($wikiob->selector)) {
             $wikiob->nocontent = true;
         }
     } else {
         if ($wikiinst->subwikis == OUWIKI_SUBWIKIS_INDIVIDUAL) {
             // Individual wiki. Get all users user can view (checking subwiki for content).
             $userfields = user_picture::fields('u', null, 'uid');