mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 20:50:21 +01:00
Merge branch 'wip-MDL-32862-master' of git://github.com/abgreeve/moodle
This commit is contained in:
commit
12d50d8216
@ -33,6 +33,11 @@ require_once($CFG->dirroot . '/mod/resource/backup/moodle2/backup_resource_steps
|
||||
*/
|
||||
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
|
||||
*/
|
||||
@ -57,14 +62,66 @@ class backup_resource_activity_task extends backup_activity_task {
|
||||
|
||||
$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]+)/";
|
||||
$content= preg_replace($search, '$@RESOURCEINDEX*$2@$', $content);
|
||||
|
||||
// Link to resource view by moduleid
|
||||
$search="/(".$base."\/mod\/resource\/view.php\?id\=)([0-9]+)/";
|
||||
$content= preg_replace($search, '$@RESOURCEVIEWBYID*$2@$', $content);
|
||||
// Link to resource view by moduleid.
|
||||
$search = "/(".$base."\/mod\/resource\/view.php\?id\=)([0-9]+)/";
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user