Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.
<?php

namespace PhpOffice\PhpSpreadsheet\Reader\Xlsx;

use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
> use SimpleXMLElement;
class Hyperlinks { private $worksheet; private $hyperlinks = []; public function __construct(Worksheet $workSheet) { $this->worksheet = $workSheet; }
< public function readHyperlinks(\SimpleXMLElement $relsWorksheet)
> public function readHyperlinks(SimpleXMLElement $relsWorksheet): void
{ foreach ($relsWorksheet->Relationship as $element) { if ($element['Type'] == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink') { $this->hyperlinks[(string) $element['Id']] = (string) $element['Target']; } } }
< public function setHyperlinks(\SimpleXMLElement $worksheetXml)
> public function setHyperlinks(SimpleXMLElement $worksheetXml): void
{ foreach ($worksheetXml->hyperlink as $hyperlink) { $this->setHyperlink($hyperlink, $this->worksheet); } }
< private function setHyperlink(\SimpleXMLElement $hyperlink, Worksheet $worksheet)
> private function setHyperlink(SimpleXMLElement $hyperlink, Worksheet $worksheet): void
{ // Link url $linkRel = $hyperlink->attributes('http://schemas.openxmlformats.org/officeDocument/2006/relationships'); foreach (Coordinate::extractAllCellReferencesInRange($hyperlink['ref']) as $cellReference) { $cell = $worksheet->getCell($cellReference); if (isset($linkRel['id'])) {
< $hyperlinkUrl = $this->hyperlinks[(string) $linkRel['id']];
> $hyperlinkUrl = $this->hyperlinks[(string) $linkRel['id']] ?? null;
if (isset($hyperlink['location'])) { $hyperlinkUrl .= '#' . (string) $hyperlink['location']; } $cell->getHyperlink()->setUrl($hyperlinkUrl); } elseif (isset($hyperlink['location'])) { $cell->getHyperlink()->setUrl('sheet://' . (string) $hyperlink['location']); } // Tooltip if (isset($hyperlink['tooltip'])) { $cell->getHyperlink()->setTooltip((string) $hyperlink['tooltip']); } } } }