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 {
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user