MDL-75189 mod_data: Final deprecations after MDL-75059
Signed-off-by: Daniel Ziegenberg <[email protected]>
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
issueNumber: MDL-75189
|
||||
notes:
|
||||
mod_data:
|
||||
- message: |
|
||||
Final deprecation and removal of the following classes:
|
||||
- data_preset_importer
|
||||
- data_preset_existing_importer
|
||||
- data_preset_upload_importer
|
||||
- data_import_preset_zip_form
|
||||
type: removed
|
||||
- message: >
|
||||
- Final deprecation of \mod_data_renderer::import_setting_mappings(). Please use \mod_data_renderer::importing_preset() instead.
|
||||
- Final deprecation of data_print_template() function. Please use mod_data\manager::get_template and mod_data\template::parse_entries instead.
|
||||
- Final deprecation of data_preset_name(). Please use preset::get_name_from_plugin() instead.
|
||||
- Final deprecation of data_get_available_presets(). Please use manager::get_available_presets() instead.
|
||||
- Final deprecation of data_get_available_site_presets(). Please use manager::get_available_saved_presets() instead.
|
||||
- Final deprecation of data_delete_site_preset(). Please use preset::delete() instead.
|
||||
- Final deprecation of is_directory_a_preset(). Please use preset::is_directory_a_preset() instead.
|
||||
- Final deprecation of data_presets_save(). Please use preset::save() instead.
|
||||
- Final deprecation of data_presets_generate_xml(). Please use preset::generate_preset_xml() instead.
|
||||
- Final deprecation of data_presets_export(). Please use preset::export() instead.
|
||||
- Final deprecation of data_user_can_delete_preset(). Please use preset::can_manage() instead.
|
||||
- Final deprecation of data_view(). Please use mod_data\manager::set_module_viewed() instead.
|
||||
type: removed
|
||||
@@ -30,6 +30,99 @@ function data_get_completion_state() {
|
||||
throw new coding_exception(__FUNCTION__ . "() has been removed, please use the '{$completionclass}' class instead");
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75146 - please do not use this function any more.
|
||||
*/
|
||||
#[\core\attribute\deprecated(
|
||||
'mod_data\manager::get_template and mod_data\template::parse_entries',
|
||||
since: '4.1',
|
||||
mdl: 'MDL-75146',
|
||||
final: true,
|
||||
)]
|
||||
function data_print_template(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75148 - please, use the preset::get_name_from_plugin() function instead.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\preset::get_name_from_plugin()', since: '4.1', mdl: 'MDL-75148', final: true)]
|
||||
function data_preset_name(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75148 - please, use the manager::get_available_presets() function instead.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\manager::get_available_presets()', since: '4.1', mdl: 'MDL-75148', final: true)]
|
||||
function data_get_available_presets(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75148 - please, use the manager::get_available_saved_presets() function instead.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\manager::get_available_saved_presets()', since: '4.1', mdl: 'MDL-75148', final: true)]
|
||||
function data_get_available_site_presets(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75187 - please, use the preset::delete() function instead.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\preset::delete()', since: '4.1', mdl: 'MDL-75187', final: true)]
|
||||
function data_delete_site_preset(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75142 - please, use the preset::save() function instead.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\preset::save()', since: '4.1', mdl: 'MDL-75142', final: true)]
|
||||
function data_presets_save(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75142 - please, use the protected preset::generate_preset_xml() function instead.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\preset::generate_preset_xml()', since: '4.1', mdl: 'MDL-75142', final: true)]
|
||||
function data_presets_generate_xml(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75142 - please, use the preset::export() function instead.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\preset::export()', since: '4.1', mdl: 'MDL-75142', final: true)]
|
||||
function data_presets_export(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75187 - please, use the preset::can_manage() function instead.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\preset::can_manage()', since: '4.1', mdl: 'MDL-75187', final: true)]
|
||||
function data_user_can_delete_preset(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75146 - please do not use this function any more.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\manager::set_module_viewed', since: '4.1', mdl: 'MDL-75146', final: true)]
|
||||
function data_view(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.1 MDL-75148 - please, use the preset::is_directory_a_preset() function instead.
|
||||
*/
|
||||
#[\core\attribute\deprecated('mod_data\preset::is_directory_a_preset()', since: '4.1', mdl: 'MDL-75148', final: true)]
|
||||
function is_directory_a_preset(): void {
|
||||
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since Moodle 4.3.
|
||||
* @global object
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
*/
|
||||
|
||||
use mod_data\manager;
|
||||
use mod_data\preset;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
@@ -1537,42 +1536,6 @@ function data_grade_item_delete($data) {
|
||||
}
|
||||
|
||||
// junk functions
|
||||
/**
|
||||
* takes a list of records, the current data, a search string,
|
||||
* and mode to display prints the translated template
|
||||
*
|
||||
* @deprecated since Moodle 4.1 MDL-75146 - please do not use this function any more.
|
||||
* @todo MDL-75189 Final deprecation in Moodle 4.5.
|
||||
* @param string $templatename the template name
|
||||
* @param array $records the entries records
|
||||
* @param stdClass $data the database instance object
|
||||
* @param string $search the current search term
|
||||
* @param int $page page number for pagination
|
||||
* @param bool $return if the result should be returned (true) or printed (false)
|
||||
* @param moodle_url|null $jumpurl a moodle_url by which to jump back to the record list (can be null)
|
||||
* @return mixed string with all parsed entries or nothing if $return is false
|
||||
*/
|
||||
function data_print_template($templatename, $records, $data, $search='', $page=0, $return=false, ?moodle_url $jumpurl=null) {
|
||||
debugging(
|
||||
'data_print_template is deprecated. Use mod_data\\manager::get_template and mod_data\\template::parse_entries instead',
|
||||
DEBUG_DEVELOPER
|
||||
);
|
||||
|
||||
$options = [
|
||||
'search' => $search,
|
||||
'page' => $page,
|
||||
];
|
||||
if ($jumpurl) {
|
||||
$options['baseurl'] = $jumpurl;
|
||||
}
|
||||
$manager = manager::create_from_instance($data);
|
||||
$parser = $manager->get_template($templatename, $options);
|
||||
$content = $parser->parse_entries($records);
|
||||
if ($return) {
|
||||
return $content;
|
||||
}
|
||||
echo $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return rating related permissions
|
||||
@@ -2215,88 +2178,6 @@ function data_convert_to_roles($data, $teacherroles=array(), $studentroles=array
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the best name to show for a preset
|
||||
*
|
||||
* @param string $shortname
|
||||
* @param string $path
|
||||
* @return string
|
||||
* @deprecated since Moodle 4.1 MDL-75148 - please, use the preset::get_name_from_plugin() function instead.
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
* @see preset::get_name_from_plugin()
|
||||
*/
|
||||
function data_preset_name($shortname, $path) {
|
||||
debugging('data_preset_name() is deprecated. Please use preset::get_name_from_plugin() instead.', DEBUG_DEVELOPER);
|
||||
|
||||
return preset::get_name_from_plugin($shortname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of all the available presets.
|
||||
*
|
||||
* @return array
|
||||
* @deprecated since Moodle 4.1 MDL-75148 - please, use the manager::get_available_presets() function instead.
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
* @see manager::get_available_presets()
|
||||
*/
|
||||
function data_get_available_presets($context) {
|
||||
debugging('data_get_available_presets() is deprecated. Please use manager::get_available_presets() instead.', DEBUG_DEVELOPER);
|
||||
|
||||
$cm = get_coursemodule_from_id('', $context->instanceid, 0, false, MUST_EXIST);
|
||||
$manager = manager::create_from_coursemodule($cm);
|
||||
return $manager->get_available_presets();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of all of the presets that users have saved to the site.
|
||||
*
|
||||
* @param stdClass $context The context that we are looking from.
|
||||
* @param array $presets
|
||||
* @return array An array of presets
|
||||
* @deprecated since Moodle 4.1 MDL-75148 - please, use the manager::get_available_saved_presets() function instead.
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
* @see manager::get_available_saved_presets()
|
||||
*/
|
||||
function data_get_available_site_presets($context, array $presets=array()) {
|
||||
debugging(
|
||||
'data_get_available_site_presets() is deprecated. Please use manager::get_available_saved_presets() instead.',
|
||||
DEBUG_DEVELOPER
|
||||
);
|
||||
|
||||
$cm = get_coursemodule_from_id('', $context->instanceid, 0, false, MUST_EXIST);
|
||||
$manager = manager::create_from_coursemodule($cm);
|
||||
$savedpresets = $manager->get_available_saved_presets();
|
||||
return array_merge($presets, $savedpresets);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a saved preset.
|
||||
*
|
||||
* @param string $name
|
||||
* @return bool
|
||||
* @deprecated since Moodle 4.1 MDL-75187 - please, use the preset::delete() function instead.
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
* @see preset::delete()
|
||||
*/
|
||||
function data_delete_site_preset($name) {
|
||||
debugging('data_delete_site_preset() is deprecated. Please use preset::delete() instead.', DEBUG_DEVELOPER);
|
||||
|
||||
$fs = get_file_storage();
|
||||
|
||||
$files = $fs->get_directory_files(DATA_PRESET_CONTEXT, DATA_PRESET_COMPONENT, DATA_PRESET_FILEAREA, 0, '/'.$name.'/');
|
||||
if (!empty($files)) {
|
||||
foreach ($files as $file) {
|
||||
$file->delete();
|
||||
}
|
||||
}
|
||||
|
||||
$dir = $fs->get_file(DATA_PRESET_CONTEXT, DATA_PRESET_COMPONENT, DATA_PRESET_FILEAREA, 0, '/'.$name.'/', '.');
|
||||
if (!empty($dir)) {
|
||||
$dir->delete();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the heads for a page
|
||||
*
|
||||
@@ -2428,376 +2309,6 @@ function data_in_readonly_period($data) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the files in a directory are the expected for a preset.
|
||||
*
|
||||
* @return bool Wheter the defined $directory has or not all the expected preset files.
|
||||
*
|
||||
* @deprecated since Moodle 4.1 MDL-75148 - please, use the preset::is_directory_a_preset() function instead.
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
* @see manager::is_directory_a_preset()
|
||||
*/
|
||||
function is_directory_a_preset($directory) {
|
||||
debugging('is_directory_a_preset() is deprecated. Please use preset::is_directory_a_preset() instead.', DEBUG_DEVELOPER);
|
||||
|
||||
return preset::is_directory_a_preset($directory);
|
||||
}
|
||||
|
||||
/**
|
||||
* Abstract class used for data preset importers
|
||||
*
|
||||
* @deprecated since Moodle 4.1 MDL-75140 - please do not use this class any more.
|
||||
* @todo MDL-75189 Final deprecation in Moodle 4.5.
|
||||
*/
|
||||
abstract class data_preset_importer {
|
||||
|
||||
protected $course;
|
||||
protected $cm;
|
||||
protected $module;
|
||||
protected $directory;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param stdClass $course
|
||||
* @param stdClass $cm
|
||||
* @param stdClass $module
|
||||
* @param string $directory
|
||||
*/
|
||||
public function __construct($course, $cm, $module, $directory) {
|
||||
debugging(
|
||||
'data_preset_importer is deprecated. Please use mod\\data\\local\\importer\\preset_importer instead',
|
||||
DEBUG_DEVELOPER
|
||||
);
|
||||
|
||||
$this->course = $course;
|
||||
$this->cm = $cm;
|
||||
$this->module = $module;
|
||||
$this->directory = $directory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the directory the preset is located in
|
||||
* @return string
|
||||
*/
|
||||
public function get_directory() {
|
||||
return basename($this->directory);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retreive the contents of a file. That file may either be in a conventional directory of the Moodle file storage
|
||||
* @param file_storage $filestorage. should be null if using a conventional directory
|
||||
* @param stored_file $fileobj the directory to look in. null if using a conventional directory
|
||||
* @param string $dir the directory to look in. null if using the Moodle file storage
|
||||
* @param string $filename the name of the file we want
|
||||
* @return string the contents of the file or null if the file doesn't exist.
|
||||
*/
|
||||
public function data_preset_get_file_contents(&$filestorage, &$fileobj, $dir, $filename) {
|
||||
if(empty($filestorage) || empty($fileobj)) {
|
||||
if (substr($dir, -1)!='/') {
|
||||
$dir .= '/';
|
||||
}
|
||||
if (file_exists($dir.$filename)) {
|
||||
return file_get_contents($dir.$filename);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
if ($filestorage->file_exists(DATA_PRESET_CONTEXT, DATA_PRESET_COMPONENT, DATA_PRESET_FILEAREA, 0, $fileobj->get_filepath(), $filename)) {
|
||||
$file = $filestorage->get_file(DATA_PRESET_CONTEXT, DATA_PRESET_COMPONENT, DATA_PRESET_FILEAREA, 0, $fileobj->get_filepath(), $filename);
|
||||
return $file->get_content();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* Gets the preset settings
|
||||
* @global moodle_database $DB
|
||||
* @return stdClass
|
||||
*/
|
||||
public function get_preset_settings() {
|
||||
global $DB, $CFG;
|
||||
require_once($CFG->libdir.'/xmlize.php');
|
||||
|
||||
$fs = $fileobj = null;
|
||||
if (!preset::is_directory_a_preset($this->directory)) {
|
||||
//maybe the user requested a preset stored in the Moodle file storage
|
||||
|
||||
$fs = get_file_storage();
|
||||
$files = $fs->get_area_files(DATA_PRESET_CONTEXT, DATA_PRESET_COMPONENT, DATA_PRESET_FILEAREA);
|
||||
|
||||
//preset name to find will be the final element of the directory
|
||||
$explodeddirectory = explode('/', $this->directory);
|
||||
$presettofind = end($explodeddirectory);
|
||||
|
||||
//now go through the available files available and see if we can find it
|
||||
foreach ($files as $file) {
|
||||
if (($file->is_directory() && $file->get_filepath()=='/') || !$file->is_directory()) {
|
||||
continue;
|
||||
}
|
||||
$presetname = trim($file->get_filepath(), '/');
|
||||
if ($presetname==$presettofind) {
|
||||
$this->directory = $presetname;
|
||||
$fileobj = $file;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($fileobj)) {
|
||||
throw new \moodle_exception('invalidpreset', 'data', '', $this->directory);
|
||||
}
|
||||
}
|
||||
|
||||
$allowed_settings = array(
|
||||
'intro',
|
||||
'comments',
|
||||
'requiredentries',
|
||||
'requiredentriestoview',
|
||||
'maxentries',
|
||||
'rssarticles',
|
||||
'approval',
|
||||
'defaultsortdir',
|
||||
'defaultsort');
|
||||
|
||||
$result = new stdClass;
|
||||
$result->settings = new stdClass;
|
||||
$result->importfields = array();
|
||||
$result->currentfields = $DB->get_records('data_fields', array('dataid'=>$this->module->id));
|
||||
if (!$result->currentfields) {
|
||||
$result->currentfields = array();
|
||||
}
|
||||
|
||||
|
||||
/* Grab XML */
|
||||
$presetxml = $this->data_preset_get_file_contents($fs, $fileobj, $this->directory,'preset.xml');
|
||||
$parsedxml = xmlize($presetxml, 0);
|
||||
|
||||
/* First, do settings. Put in user friendly array. */
|
||||
$settingsarray = $parsedxml['preset']['#']['settings'][0]['#'];
|
||||
$result->settings = new StdClass();
|
||||
foreach ($settingsarray as $setting => $value) {
|
||||
if (!is_array($value) || !in_array($setting, $allowed_settings)) {
|
||||
// unsupported setting
|
||||
continue;
|
||||
}
|
||||
$result->settings->$setting = $value[0]['#'];
|
||||
}
|
||||
|
||||
/* Now work out fields to user friendly array */
|
||||
$fieldsarray = $parsedxml['preset']['#']['field'];
|
||||
foreach ($fieldsarray as $field) {
|
||||
if (!is_array($field)) {
|
||||
continue;
|
||||
}
|
||||
$f = new StdClass();
|
||||
foreach ($field['#'] as $param => $value) {
|
||||
if (!is_array($value)) {
|
||||
continue;
|
||||
}
|
||||
$f->$param = $value[0]['#'];
|
||||
}
|
||||
$f->dataid = $this->module->id;
|
||||
$f->type = clean_param($f->type, PARAM_ALPHA);
|
||||
$result->importfields[] = $f;
|
||||
}
|
||||
/* Now add the HTML templates to the settings array so we can update d */
|
||||
$result->settings->singletemplate = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"singletemplate.html");
|
||||
$result->settings->listtemplate = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"listtemplate.html");
|
||||
$result->settings->listtemplateheader = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"listtemplateheader.html");
|
||||
$result->settings->listtemplatefooter = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"listtemplatefooter.html");
|
||||
$result->settings->addtemplate = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"addtemplate.html");
|
||||
$result->settings->rsstemplate = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"rsstemplate.html");
|
||||
$result->settings->rsstitletemplate = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"rsstitletemplate.html");
|
||||
$result->settings->csstemplate = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"csstemplate.css");
|
||||
$result->settings->jstemplate = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"jstemplate.js");
|
||||
$result->settings->asearchtemplate = $this->data_preset_get_file_contents($fs, $fileobj,$this->directory,"asearchtemplate.html");
|
||||
|
||||
$result->settings->instance = $this->module->id;
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Import the preset into the given database module
|
||||
* @return bool
|
||||
*/
|
||||
function import($overwritesettings) {
|
||||
global $DB, $CFG, $OUTPUT;
|
||||
|
||||
$params = $this->get_preset_settings();
|
||||
$settings = $params->settings;
|
||||
$newfields = $params->importfields;
|
||||
$currentfields = $params->currentfields;
|
||||
$preservedfields = array();
|
||||
|
||||
/* Maps fields and makes new ones */
|
||||
if (!empty($newfields)) {
|
||||
/* We require an injective mapping, and need to know what to protect */
|
||||
foreach ($newfields as $nid => $newfield) {
|
||||
$cid = optional_param("field_$nid", -1, PARAM_INT);
|
||||
if ($cid == -1) {
|
||||
continue;
|
||||
}
|
||||
if (array_key_exists($cid, $preservedfields)){
|
||||
throw new \moodle_exception('notinjectivemap', 'data');
|
||||
}
|
||||
else $preservedfields[$cid] = true;
|
||||
}
|
||||
$missingfieldtypes = [];
|
||||
foreach ($newfields as $nid => $newfield) {
|
||||
$cid = optional_param("field_$nid", -1, PARAM_INT);
|
||||
|
||||
/* A mapping. Just need to change field params. Data kept. */
|
||||
if ($cid != -1 and isset($currentfields[$cid])) {
|
||||
$fieldobject = data_get_field_from_id($currentfields[$cid]->id, $this->module);
|
||||
foreach ($newfield as $param => $value) {
|
||||
if ($param != "id") {
|
||||
$fieldobject->field->$param = $value;
|
||||
}
|
||||
}
|
||||
unset($fieldobject->field->similarfield);
|
||||
$fieldobject->update_field();
|
||||
unset($fieldobject);
|
||||
} else {
|
||||
/* Make a new field */
|
||||
$filepath = "field/$newfield->type/field.class.php";
|
||||
if (!file_exists($filepath)) {
|
||||
$missingfieldtypes[] = $newfield->name;
|
||||
continue;
|
||||
}
|
||||
include_once($filepath);
|
||||
|
||||
if (!isset($newfield->description)) {
|
||||
$newfield->description = '';
|
||||
}
|
||||
$classname = 'data_field_'.$newfield->type;
|
||||
$fieldclass = new $classname($newfield, $this->module);
|
||||
$fieldclass->insert_field();
|
||||
unset($fieldclass);
|
||||
}
|
||||
}
|
||||
if (!empty($missingfieldtypes)) {
|
||||
echo $OUTPUT->notification(get_string('missingfieldtypeimport', 'data') . html_writer::alist($missingfieldtypes));
|
||||
}
|
||||
}
|
||||
|
||||
/* Get rid of all old unused data */
|
||||
foreach ($currentfields as $cid => $currentfield) {
|
||||
if (!array_key_exists($cid, $preservedfields)) {
|
||||
/* Data not used anymore so wipe! */
|
||||
echo "Deleting field $currentfield->name<br />";
|
||||
|
||||
// Delete all information related to fields.
|
||||
$todelete = data_get_field_from_id($currentfield->id, $this->module);
|
||||
$todelete->delete_field();
|
||||
}
|
||||
}
|
||||
|
||||
// handle special settings here
|
||||
if (!empty($settings->defaultsort)) {
|
||||
if (is_numeric($settings->defaultsort)) {
|
||||
// old broken value
|
||||
$settings->defaultsort = 0;
|
||||
} else {
|
||||
$settings->defaultsort = (int)$DB->get_field('data_fields', 'id', array('dataid'=>$this->module->id, 'name'=>$settings->defaultsort));
|
||||
}
|
||||
} else {
|
||||
$settings->defaultsort = 0;
|
||||
}
|
||||
|
||||
// do we want to overwrite all current database settings?
|
||||
if ($overwritesettings) {
|
||||
// all supported settings
|
||||
$overwrite = array_keys((array)$settings);
|
||||
} else {
|
||||
// only templates and sorting
|
||||
$overwrite = array('singletemplate', 'listtemplate', 'listtemplateheader', 'listtemplatefooter',
|
||||
'addtemplate', 'rsstemplate', 'rsstitletemplate', 'csstemplate', 'jstemplate',
|
||||
'asearchtemplate', 'defaultsortdir', 'defaultsort');
|
||||
}
|
||||
|
||||
// now overwrite current data settings
|
||||
foreach ($this->module as $prop=>$unused) {
|
||||
if (in_array($prop, $overwrite)) {
|
||||
$this->module->$prop = $settings->$prop;
|
||||
}
|
||||
}
|
||||
|
||||
data_update_instance($this->module);
|
||||
|
||||
return $this->cleanup();
|
||||
}
|
||||
|
||||
/**
|
||||
* Any clean up routines should go here
|
||||
* @return bool
|
||||
*/
|
||||
public function cleanup() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Data preset importer for uploaded presets
|
||||
*
|
||||
* @deprecated since Moodle 4.1 MDL-75140 - please do not use this class any more.
|
||||
* @todo MDL-75189 Final deprecation in Moodle 4.5.
|
||||
*/
|
||||
class data_preset_upload_importer extends data_preset_importer {
|
||||
public function __construct($course, $cm, $module, $filepath) {
|
||||
global $USER;
|
||||
|
||||
debugging(
|
||||
'data_preset_upload_importer is deprecated. Please use mod\\data\\local\\importer\\preset_upload_importer instead',
|
||||
DEBUG_DEVELOPER
|
||||
);
|
||||
|
||||
if (is_file($filepath)) {
|
||||
$fp = get_file_packer();
|
||||
if ($fp->extract_to_pathname($filepath, $filepath.'_extracted')) {
|
||||
fulldelete($filepath);
|
||||
}
|
||||
$filepath .= '_extracted';
|
||||
}
|
||||
parent::__construct($course, $cm, $module, $filepath);
|
||||
}
|
||||
|
||||
public function cleanup() {
|
||||
return fulldelete($this->directory);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Data preset importer for existing presets
|
||||
*
|
||||
* @deprecated since Moodle 4.1 MDL-75140 - please do not use this class any more.
|
||||
* @todo MDL-75189 Final deprecation in Moodle 4.5.
|
||||
*/
|
||||
class data_preset_existing_importer extends data_preset_importer {
|
||||
protected $userid;
|
||||
public function __construct($course, $cm, $module, $fullname) {
|
||||
global $USER;
|
||||
|
||||
debugging(
|
||||
'data_preset_existing_importer is deprecated. Please use mod\\data\\local\\importer\\preset_existing_importer instead',
|
||||
DEBUG_DEVELOPER
|
||||
);
|
||||
|
||||
list($userid, $shortname) = explode('/', $fullname, 2);
|
||||
$context = context_module::instance($cm->id);
|
||||
if ($userid && ($userid != $USER->id) && !has_capability('mod/data:manageuserpresets', $context) && !has_capability('mod/data:viewalluserpresets', $context)) {
|
||||
throw new coding_exception('Invalid preset provided');
|
||||
}
|
||||
|
||||
$this->userid = $userid;
|
||||
$filepath = data_preset_path($course, $userid, $shortname);
|
||||
parent::__construct($course, $cm, $module, $filepath);
|
||||
}
|
||||
public function get_userid() {
|
||||
return $this->userid;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @global object
|
||||
* @global object
|
||||
@@ -3392,71 +2903,6 @@ function data_extend_settings_navigation(settings_navigation $settings, navigati
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the database configuration as a preset.
|
||||
*
|
||||
* @param stdClass $course The course the database module belongs to.
|
||||
* @param stdClass $cm The course module record
|
||||
* @param stdClass $data The database record
|
||||
* @param string $path
|
||||
* @return bool
|
||||
* @deprecated since Moodle 4.1 MDL-75142 - please, use the preset::save() function instead.
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
* @see preset::save()
|
||||
*/
|
||||
function data_presets_save($course, $cm, $data, $path) {
|
||||
debugging('data_presets_save() is deprecated. Please use preset::save() instead.', DEBUG_DEVELOPER);
|
||||
|
||||
$manager = manager::create_from_instance($data);
|
||||
$preset = preset::create_from_instance($manager, $path);
|
||||
return $preset->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the XML for the database module provided
|
||||
*
|
||||
* @global moodle_database $DB
|
||||
* @param stdClass $course The course the database module belongs to.
|
||||
* @param stdClass $cm The course module record
|
||||
* @param stdClass $data The database record
|
||||
* @return string The XML for the preset
|
||||
* @deprecated since Moodle 4.1 MDL-75142 - please, use the protected preset::generate_preset_xml() function instead.
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
* @see preset::generate_preset_xml()
|
||||
*/
|
||||
function data_presets_generate_xml($course, $cm, $data) {
|
||||
debugging(
|
||||
'data_presets_generate_xml() is deprecated. Please use the protected preset::generate_preset_xml() instead.',
|
||||
DEBUG_DEVELOPER
|
||||
);
|
||||
|
||||
$manager = manager::create_from_instance($data);
|
||||
$preset = preset::create_from_instance($manager, $data->name);
|
||||
$reflection = new \ReflectionClass(preset::class);
|
||||
$method = $reflection->getMethod('generate_preset_xml');
|
||||
return $method->invokeArgs($preset, []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Export current fields and presets.
|
||||
*
|
||||
* @param stdClass $course The course the database module belongs to.
|
||||
* @param stdClass $cm The course module record
|
||||
* @param stdClass $data The database record
|
||||
* @param bool $tostorage
|
||||
* @return string the full path to the exported preset file.
|
||||
* @deprecated since Moodle 4.1 MDL-75142 - please, use the preset::export() function instead.
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
* @see preset::export()
|
||||
*/
|
||||
function data_presets_export($course, $cm, $data, $tostorage=false) {
|
||||
debugging('data_presets_export() is deprecated. Please use preset::export() instead.', DEBUG_DEVELOPER);
|
||||
|
||||
$manager = manager::create_from_instance($data);
|
||||
$preset = preset::create_from_instance($manager, $data->name);
|
||||
return $preset->export();
|
||||
}
|
||||
|
||||
/**
|
||||
* Running addtional permission check on plugin, for example, plugins
|
||||
* may have switch to turn on/off comments option, this callback will
|
||||
@@ -3791,39 +3237,6 @@ function data_get_advanced_search_sql($sort, $data, $recordids, $selectdata, $so
|
||||
return $sqlselect;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if the user has permission to delete the preset.
|
||||
* @param stdClass $context Context object.
|
||||
* @param stdClass $preset The preset object that we are checking for deletion.
|
||||
* @return bool Returns true if the user can delete, otherwise false.
|
||||
* @deprecated since Moodle 4.1 MDL-75187 - please, use the preset::can_manage() function instead.
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
* @see preset::can_manage()
|
||||
*/
|
||||
function data_user_can_delete_preset($context, $preset) {
|
||||
global $USER;
|
||||
|
||||
debugging('data_user_can_delete_preset() is deprecated. Please use manager::can_manage() instead.', DEBUG_DEVELOPER);
|
||||
|
||||
if ($context->contextlevel == CONTEXT_MODULE && isset($preset->name)) {
|
||||
$cm = get_coursemodule_from_id('', $context->instanceid, 0, false, MUST_EXIST);
|
||||
$manager = manager::create_from_coursemodule($cm);
|
||||
$todelete = preset::create_from_instance($manager, $preset->name);
|
||||
return $todelete->can_manage();
|
||||
}
|
||||
|
||||
if (has_capability('mod/data:manageuserpresets', $context)) {
|
||||
return true;
|
||||
} else {
|
||||
$candelete = false;
|
||||
$userid = $preset instanceof preset ? $preset->get_userid() : $preset->userid;
|
||||
if ($userid == $USER->id) {
|
||||
$candelete = true;
|
||||
}
|
||||
return $candelete;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a record entry.
|
||||
*
|
||||
@@ -4087,38 +3500,6 @@ function data_update_completion_state($data, $course, $cm) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark the activity completed (if required) and trigger the course_module_viewed event.
|
||||
*
|
||||
* @deprecated since Moodle 4.1 MDL-75146 - please do not use this function any more.
|
||||
* @todo MDL-75189 Final deprecation in Moodle 4.5.
|
||||
* @param stdClass $data data object
|
||||
* @param stdClass $course course object
|
||||
* @param stdClass $cm course module object
|
||||
* @param stdClass $context context object
|
||||
* @since Moodle 3.3
|
||||
*/
|
||||
function data_view($data, $course, $cm, $context) {
|
||||
global $CFG;
|
||||
debugging('data_view is deprecated. Use mod_data\\manager::set_module_viewed instead', DEBUG_DEVELOPER);
|
||||
require_once($CFG->libdir . '/completionlib.php');
|
||||
|
||||
// Trigger course_module_viewed event.
|
||||
$params = array(
|
||||
'context' => $context,
|
||||
'objectid' => $data->id
|
||||
);
|
||||
|
||||
$event = \mod_data\event\course_module_viewed::create($params);
|
||||
$event->add_record_snapshot('course_modules', $cm);
|
||||
$event->add_record_snapshot('course', $course);
|
||||
$event->add_record_snapshot('data', $data);
|
||||
$event->trigger();
|
||||
|
||||
// Completion.
|
||||
$completion = new completion_info($course);
|
||||
$completion->set_module_viewed($cm);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of deprecated icons.
|
||||
|
||||
@@ -46,42 +46,6 @@ class data_existing_preset_form extends moodleform {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Import preset class
|
||||
*
|
||||
*
|
||||
* @package mod_data
|
||||
* @deprecated since 4.1 This is deprecated since MDL-75188, please use the dynamic_form
|
||||
* form (\mod_data\form\import_presets)
|
||||
* @todo MDL-75189 This will be deleted in Moodle 4.5.
|
||||
*/
|
||||
class data_import_preset_zip_form extends moodleform {
|
||||
/**
|
||||
* Form definition
|
||||
*
|
||||
* @return void
|
||||
* @throws coding_exception
|
||||
*/
|
||||
public function definition() {
|
||||
$this->_form->addElement('header', 'uploadpreset', get_string('fromfile', 'data'));
|
||||
$this->_form->addHelpButton('uploadpreset', 'fromfile', 'data');
|
||||
|
||||
$this->_form->addElement('hidden', 'd');
|
||||
$this->_form->setType('d', PARAM_INT);
|
||||
$this->_form->addElement('hidden', 'mode', 'import');
|
||||
$this->_form->setType('mode', PARAM_ALPHANUM);
|
||||
$this->_form->addElement('hidden', 'action', 'importzip');
|
||||
$this->_form->setType('action', PARAM_ALPHANUM);
|
||||
$this->_form->addElement('filepicker', 'importfile', get_string('chooseorupload', 'data'));
|
||||
$this->_form->addRule('importfile', null, 'required');
|
||||
$buttons = [
|
||||
$this->_form->createElement('submit', 'submitbutton', get_string('save')),
|
||||
$this->_form->createElement('cancel'),
|
||||
];
|
||||
$this->_form->addGroup($buttons, 'buttonar', '', [' '], false);
|
||||
}
|
||||
}
|
||||
|
||||
class data_export_form extends moodleform {
|
||||
public function definition() {
|
||||
$this->_form->addElement('header', 'exportheading', get_string('exportaszip', 'data'));
|
||||
|
||||
+3
-13
@@ -22,7 +22,6 @@
|
||||
* @package mod_data
|
||||
*/
|
||||
|
||||
use mod_data\local\importer\preset_existing_importer;
|
||||
use mod_data\manager;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
@@ -30,20 +29,11 @@ defined('MOODLE_INTERNAL') || die();
|
||||
class mod_data_renderer extends plugin_renderer_base {
|
||||
|
||||
/**
|
||||
* Rendering setting and mapping page to import a preset.
|
||||
*
|
||||
* @param stdClass $datamodule Database module to import to.
|
||||
* @param data_preset_importer $importer Importer instance to use for the importing.
|
||||
* @return string
|
||||
* @deprecated since Moodle 4.1 MDL-75140 - please do not use this class any more.
|
||||
* @todo MDL-75189 Final deprecation in Moodle 4.5.
|
||||
*/
|
||||
public function import_setting_mappings($datamodule, data_preset_importer $importer) {
|
||||
debugging('import_setting_mappings is deprecated. Please use importing_preset instead', DEBUG_DEVELOPER);
|
||||
|
||||
$manager = \mod_data\manager::create_from_coursemodule($datamodule);
|
||||
$fullname = $importer->get_directory();
|
||||
return $this->importing_preset($datamodule, new preset_existing_importer($manager, $fullname));
|
||||
#[\core\attribute\deprecated('mod_data_renderer::importing_preset()', since: '4.1', mdl: 'MDL-75140', final: true)]
|
||||
public function import_setting_mappings(): void {
|
||||
\core\deprecation::emit_deprecation_if_present([self::class, __FUNCTION__]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user