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); } }