Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'MDL-29334_m23' of git://github.com/markn86/moodle into …

…MOODLE_23_STABLE
  • Loading branch information...
commit 8e81a8eb2c349fde9465a08de55a8961a426d9d1 2 parents 160d3c6 + f2f5a5f
@danpoltawski danpoltawski authored
Showing with 89 additions and 2 deletions.
  1. +87 −0 mod/data/db/upgrade.php
  2. +2 −2 mod/data/version.php
View
87 mod/data/db/upgrade.php
@@ -32,6 +32,93 @@ function xmldb_data_upgrade($oldversion) {
// Moodle v2.3.0 release upgrade line
// Put any upgrade step following this
+ if ($oldversion < 2012061701) {
+ // 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, 2012061701, 'data');
+ }
return true;
}
View
4 mod/data/version.php
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
-$module->version = 2012061700; // The current module version (Date: YYYYMMDDXX)
-$module->requires = 2012061700; // Requires this Moodle version
+$module->version = 2012061701; // The current module version (Date: YYYYMMDDXX)
+$module->requires = 2012061700; // Requires this Moodle version
$module->component = 'mod_data'; // Full name of the plugin (used for diagnostics)
$module->cron = 0;
Please sign in to comment.
Something went wrong with that request. Please try again.