Skip to content

Commit

Permalink
MDL-29334 mod_data: if site-wide presets created in <= 1.9 exist conv…
Browse files Browse the repository at this point in the history
…ert them to 2.x
  • Loading branch information
mdjnelson committed Dec 12, 2012
1 parent c274d5e commit 9a48481
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 1 deletion.
88 changes: 88 additions & 0 deletions mod/data/db/upgrade.php
Expand Up @@ -344,6 +344,94 @@ function xmldb_data_upgrade($oldversion) {
// Moodle v2.2.0 release upgrade line
// Put any upgrade step following this

if ($oldversion < 2011112902) {
// Check if there is a directory containing any old presets.
$olddatadir = $CFG->dataroot . '/data';
$oldpresetdir = "$olddatadir/preset";
if (file_exists($oldpresetdir)) {
// Get directory contents.
$userfolders = new DirectoryIterator($oldpresetdir);
// Store the system context, these are site wide presets.
$context = get_system_context();
// Create file storage object.
$fs = get_file_storage();
// Create array of accepted files.
$arracceptedfilenames = array('singletemplate.html', 'listtemplateheader.html', 'listtemplate.html',
'listtemplatefooter.html', 'addtemplate.html', 'rsstemplate.html',
'rsstitletemplate.html', 'csstemplate.css', 'jstemplate.js',
'asearchtemplate.html', 'preset.xml');
// Loop through all the folders, they should represent userids.
foreach ($userfolders as $userfolder) {
// If it is a file, skip it.
if ($userfolder->isFile()) {
continue;
}
// The folder name should represent the user id.
$userid = $userfolder->getFilename();
// Skip if it is not numeric.
if (!is_numeric($userid)) {
continue;
}
// Skip if the number does not correspond to a user (does not matter if user was deleted).
if (!$DB->record_exists('user', array('id' => $userid))) {
continue;
}
// Open this folder.
$presetfolders = new DirectoryIterator("$oldpresetdir/$userid");
foreach ($presetfolders as $presetfolder) {
// If it is a file, skip it.
if ($presetfolder->isFile()) {
continue;
}
// Save the name of the preset.
$presetname = $presetfolder->getFilename();
// Get the files in this preset folder.
$presetfiles = new DirectoryIterator("$oldpresetdir/$userid/$presetname");
// Now we want to get the contents of the presets.
foreach ($presetfiles as $file) {
// If it is not a file, skip it.
if (!$file->isFile()) {
continue;
}
// Set the filename.
$filename = $file->getFilename();
// If it is not in the array of accepted file names skip it.
if (!in_array($filename, $arracceptedfilenames)) {
continue;
}
// Store the full file path.
$fullfilepath = "$oldpresetdir/$userid/$presetname/$filename";
// Create file record.
$filerecord = array('contextid' => $context->id,
'component' => 'mod_data',
'filearea' => 'site_presets',
'itemid' => 0,
'filename' => $filename,
'userid' => $userid);
// Check to ensure it does not already exists in the file directory.
if (!$fs->file_exists($context->id, 'mod_data', 'site_presets', 0, '/' . $presetfolder . '/', $filename)) {
$filerecord['filepath'] = '/' . $presetfolder . '/';
} else {
$filerecord['filepath'] = '/' . $presetfolder . '_' . $userid . '_old/';
}
$fs->create_file_from_pathname($filerecord, $fullfilepath);
// Remove the file.
@unlink($fullfilepath);
}
// Remove the preset directory.
@rmdir("$oldpresetdir/$userid/$presetname");
}
// Remove the user directory.
@rmdir("$oldpresetdir/$userid");
}
// Remove the final directories.
@rmdir("$oldpresetdir");
@rmdir("$olddatadir");
}

upgrade_mod_savepoint(true, 2011112902, 'data');
}

return true;
}

Expand Down
2 changes: 1 addition & 1 deletion mod/data/version.php
Expand Up @@ -25,7 +25,7 @@

defined('MOODLE_INTERNAL') || die();

$module->version = 2011112901; // The current module version (Date: YYYYMMDDXX)
$module->version = 2011112902; // The current module version (Date: YYYYMMDDXX)
$module->requires = 2011112900; // Requires this Moodle version
$module->component = 'mod_data'; // Full name of the plugin (used for diagnostics)
$module->cron = 0;

0 comments on commit 9a48481

Please sign in to comment.