/** * Update widgetspace instance. * @param object $data * @param object $mform * @return bool true */ function widgetspace_update_instance($data, $mform) { global $CFG, $DB; require_once "{$CFG->libdir}/resourcelib.php"; $cmid = $data->coursemodule; $draftitemid = $data->widgetspace['itemid']; $data->timemodified = time(); $data->id = $data->instance; $data->revision++; $displayoptions = array(); if ($data->display == RESOURCELIB_DISPLAY_POPUP) { $displayoptions['popupwidth'] = $data->popupwidth; $displayoptions['popupheight'] = $data->popupheight; } $displayoptions['printheading'] = $data->printheading; $displayoptions['printintro'] = $data->printintro; $data->displayoptions = serialize($displayoptions); $data->content = $data->widgetspace['text']; $data->contentformat = $data->widgetspace['format']; //update, delete or insert gadgets $widgetspace = $data; foreach ($widgetspace->gadget as $key => $value) { $value = trim($value); $gadget = new stdClass(); $gadget->url = $value; $gadget->widgetspaceid = $widgetspace->id; // set height and name of a gadget set_gadget_metadata($gadget->url, $gadget); $gadget->timemodified = time(); if (isset($widgetspace->gadgetid[$key]) && !empty($widgetspace->gadgetid[$key])) { //existing choice record $gadget->id = $widgetspace->gadgetid[$key]; if (isset($value) && $value != '') { $DB->update_record("widgetspace_gadgets", $gadget); } else { //empty old option - needs to be deleted. $DB->delete_records("widgetspace_gadgets", array("id" => $gadget->id)); } } else { if (isset($value) && $value != '') { $DB->insert_record("widgetspace_gadgets", $gadget); } } } $DB->update_record('widgetspace', $data); $context = get_context_instance(CONTEXT_MODULE, $cmid); if ($draftitemid) { $data->content = file_save_draft_area_files($draftitemid, $context->id, 'mod_widgetspace', 'content', 0, widgetspace_get_editor_options($context), $data->content); $DB->update_record('widgetspace', $data); } return true; }
function data_preprocessing(&$default_values) { global $DB; if ($this->current->instance) { $draftitemid = file_get_submitted_draft_itemid('widgetspace'); $default_values['widgetspace']['format'] = $default_values['contentformat']; $default_values['widgetspace']['text'] = file_prepare_draft_area($draftitemid, $this->context->id, 'mod_widgetspace', 'content', 0, widgetspace_get_editor_options($this->context), $default_values['content']); $default_values['widgetspace']['itemid'] = $draftitemid; } if (!empty($default_values['displayoptions'])) { $displayoptions = unserialize($default_values['displayoptions']); if (isset($displayoptions['printintro'])) { $default_values['printintro'] = $displayoptions['printintro']; } if (isset($displayoptions['printheading'])) { $default_values['printheading'] = $displayoptions['printheading']; } if (!empty($displayoptions['popupwidth'])) { $default_values['popupwidth'] = $displayoptions['popupwidth']; } if (!empty($displayoptions['popupheight'])) { $default_values['popupheight'] = $displayoptions['popupheight']; } } if (!empty($this->current->instance) && ($gadgets = $DB->get_records_menu('widgetspace_gadgets', array('widgetspaceid' => $this->current->instance), 'id', 'id,url'))) { $widgetspaceids = array_keys($gadgets); $gadgets = array_values($gadgets); foreach (array_keys($gadgets) as $key) { $default_values['gadget[' . $key . ']'] = $gadgets[$key]; $default_values['gadgetid[' . $key . ']'] = $widgetspaceids[$key]; } } }