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; }
} 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');