Merge branch 'wip-MDL-32862-master' of git://github.com/abgreeve/moodle

This commit is contained in:
Sam Hemelryk 2013-09-10 09:38:46 +12:00
commit 12d50d8216

View File

@ -33,6 +33,11 @@ require_once($CFG->dirroot . '/mod/resource/backup/moodle2/backup_resource_steps
*/ */
class backup_resource_activity_task extends backup_activity_task { class backup_resource_activity_task extends backup_activity_task {
/**
* @param bool $resourceoldexists True if there are records in the resource_old table.
*/
protected static $resourceoldexists = null;
/** /**
* No specific settings for this activity * No specific settings for this activity
*/ */
@ -57,14 +62,66 @@ class backup_resource_activity_task extends backup_activity_task {
$base = preg_quote($CFG->wwwroot,"/"); $base = preg_quote($CFG->wwwroot,"/");
// Link to the list of resources // Link to the list of resources.
$search="/(".$base."\/mod\/resource\/index.php\?id\=)([0-9]+)/"; $search="/(".$base."\/mod\/resource\/index.php\?id\=)([0-9]+)/";
$content= preg_replace($search, '$@RESOURCEINDEX*$2@$', $content); $content= preg_replace($search, '$@RESOURCEINDEX*$2@$', $content);
// Link to resource view by moduleid // Link to resource view by moduleid.
$search="/(".$base."\/mod\/resource\/view.php\?id\=)([0-9]+)/"; $search = "/(".$base."\/mod\/resource\/view.php\?id\=)([0-9]+)/";
$content= preg_replace($search, '$@RESOURCEVIEWBYID*$2@$', $content); // Link to resource view by recordid
$search2 = "/(".$base."\/mod\/resource\/view.php\?r\=)([0-9]+)/";
// Check whether there are contents in the resource old table.
if (static::$resourceoldexists === null) {
static::$resourceoldexists = $DB->record_exists('resource_old', array());
}
// If there are links to items in the resource_old table, rewrite them to be links to the correct URL
// for their new module.
if (static::$resourceoldexists) {
// Match all of the resources.
$result = preg_match_all($search, $content, $matches, PREG_PATTERN_ORDER);
// Course module ID resource links.
if ($result) {
list($insql, $params) = $DB->get_in_or_equal($matches[2]);
$oldrecs = $DB->get_records_select('resource_old', "cmid $insql", $params, '', 'cmid, newmodule');
for ($i = 0; $i < count($matches[0]); $i++) {
$cmid = $matches[2][$i];
if (isset($oldrecs[$cmid])) {
// Resource_old item, rewrite it
$replace = '$@' . strtoupper($oldrecs[$cmid]->newmodule) . 'VIEWBYID*' . $cmid . '@$';
} else {
// Not in the resource old table, don't rewrite
$replace = '$@RESOURCEVIEWBYID*'.$cmid.'@$';
}
$content = str_replace($matches[0][$i], $replace, $content);
}
}
$matches = null;
$result = preg_match_all($search2, $content, $matches, PREG_PATTERN_ORDER);
// No resource links.
if (!$result) {
return $content;
}
// Resource ID links.
list($insql, $params) = $DB->get_in_or_equal($matches[2]);
$oldrecs = $DB->get_records_select('resource_old', "oldid $insql", $params, '', 'oldid, cmid, newmodule');
for ($i = 0; $i < count($matches[0]); $i++) {
$recordid = $matches[2][$i];
if (isset($oldrecs[$recordid])) {
// Resource_old item, rewrite it
$replace = '$@' . strtoupper($oldrecs[$recordid]->newmodule) . 'VIEWBYID*' . $oldrecs[$recordid]->cmid . '@$';
$content = str_replace($matches[0][$i], $replace, $content);
}
}
} else {
$content = preg_replace($search, '$@RESOURCEVIEWBYID*$2@$', $content);
}
return $content; return $content;
} }
} }