prepareActivityDirectory($exportDir, 'resource', $moduleId);
// Retrieve resource data
$resourceData = $this->getData($activityId, $sectionId);
// Generate XML files
$this->createResourceXml($resourceData, $resourceDir);
$this->createModuleXml($resourceData, $resourceDir);
$this->createGradesXml($resourceData, $resourceDir);
$this->createFiltersXml($resourceData, $resourceDir);
$this->createGradeHistoryXml($resourceData, $resourceDir);
$this->createInforefXml($resourceData, $resourceDir);
$this->createRolesXml($resourceData, $resourceDir);
$this->createCommentsXml($resourceData, $resourceDir);
$this->createCalendarXml($resourceData, $resourceDir);
}
/**
* Get resource data dynamically from the course.
*/
public function getData(int $resourceId, int $sectionId): array
{
$resource = $this->course->resources[RESOURCE_DOCUMENT][$resourceId];
return [
'id' => $resourceId,
'moduleid' => $resource->source_id,
'modulename' => 'resource',
'contextid' => $resource->source_id,
'name' => $resource->title,
'intro' => $resource->comment ?? '',
'sectionid' => $sectionId,
'sectionnumber' => 1,
'timemodified' => time(),
'users' => [],
'files' => [],
];
}
/**
* Creates the inforef.xml file, referencing users and files associated with the activity.
*
* @param array $references Contains 'users' and 'files' arrays to reference in the XML.
* @param string $directory The directory where the XML file will be saved.
*/
protected function createInforefXml(array $references, string $directory): void
{
$xmlContent = ''.PHP_EOL;
$xmlContent .= ''.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;
$xmlContent .= ' '.htmlspecialchars($references['id']).''.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;
$xmlContent .= ''.PHP_EOL;
// Save the XML content to the directory
$this->createXmlFile('inforef', $xmlContent, $directory);
}
/**
* Create the XML file for the resource.
*/
private function createResourceXml(array $resourceData, string $resourceDir): void
{
$xmlContent = ''.PHP_EOL;
$xmlContent .= ''.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;
$xmlContent .= ' '.htmlspecialchars($resourceData['name']).''.PHP_EOL;
$xmlContent .= ' '.htmlspecialchars($resourceData['intro']).''.PHP_EOL;
$xmlContent .= ' 1'.PHP_EOL;
$xmlContent .= ' 0'.PHP_EOL;
$xmlContent .= ' 0'.PHP_EOL;
$xmlContent .= ' $@NULL@$'.PHP_EOL;
$xmlContent .= ' 0'.PHP_EOL;
$xmlContent .= ' a:1:{s:10:"printintro";i:1;}'.PHP_EOL;
$xmlContent .= ' 0'.PHP_EOL;
$xmlContent .= ' 1'.PHP_EOL;
$xmlContent .= ' '.$resourceData['timemodified'].''.PHP_EOL;
$xmlContent .= ' '.PHP_EOL;
$xmlContent .= ''.PHP_EOL;
$this->createXmlFile('resource', $xmlContent, $resourceDir);
}
}