You are here

class SVG in Forena Reports 8

Provides SVG file exports

Exports only the first SVG element in a report. This is useful for building dynamic SVG assets.

Plugin annotation


@FrxDocument(
  id= "svg",
  name="Scaler Vector Graphics",
  ext="svg"
)

Hierarchy

Expanded class hierarchy of SVG

File

src/FrxPlugin/Document/SVG.php, line 21
SVG Embedded SVG Graph as it's own document. @author davidmetzler

Namespace

Drupal\forena\FrxPlugin\Document
View source
class SVG extends DocumentBase {
  public function __construct() {
    $this->content_type = 'image/svg+xml';
  }
  public function header() {
    $this->write_buffer = '';
    $this->headers = [];
    $this->headers['Content-Type'] = $this->content_type;
    $this->headers['Cache-Control'] = 'must-revalidate';
  }
  public function flush() {
    $output = '';
    $svg = NULL;
    $doc = new \DomDocument();
    $xml_body = '<html><body>' . $this->write_buffer . '</body></html>';
    $doc->formatOutput = FALSE;
    $doc->strictErrorChecking = FALSE;
    libxml_use_internal_errors(true);
    $doc
      ->loadXML($xml_body);
    libxml_clear_errors();
    $xml = simplexml_import_dom($doc);

    // Extract first SVG from document.
    $xml
      ->registerXPathNamespace('__empty_ns', 'http://www.w3.org/2000/svg');
    if ($xml) {
      $svg = $xml
        ->xpath('//__empty_ns:svg');
      if (!$svg) {
        $svg = $xml
          ->xpath('//svg');
      }
    }
    if ($svg) {
      $output .= $svg[0]
        ->asXML();
    }
    else {
      $output = '<svg/>';
    }

    // Add in namespaces
    if (!strpos($output, 'xmlns')) {
      $output = str_replace('<svg', '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"', $output);
    }
    return $output;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DocumentBase::$buffer public property
DocumentBase::$charset public property
DocumentBase::$commands protected property
DocumentBase::$content_type public property
DocumentBase::$filename protected property
DocumentBase::$file_name public property
DocumentBase::$format public property
DocumentBase::$headers public property
DocumentBase::$libraries public property
DocumentBase::$parameters_form public property
DocumentBase::$skin protected property
DocumentBase::$skin_name protected property
DocumentBase::$title public property
DocumentBase::$write_buffer protected property
DocumentBase::addAjaxCommand public function
DocumentBase::check_markup public function Wrapper function for check output to default the right type.
DocumentBase::clear public function Clear the buffer Overrides DocumentInterface::clear
DocumentBase::convertCharset public function Perform character set conversion
DocumentBase::footer public function No default footer. Overrides DocumentInterface::footer 1
DocumentBase::getAjaxCommands public function
DocumentBase::setFilename public function Overrides DocumentInterface::setFilename
DocumentBase::setSkin public function Overrides DocumentInterface::setSkin
DocumentBase::write public function Write Overrides DocumentInterface::write
FrxAPI::app public function Returns containing application service
FrxAPI::currentDataContext public function Get the current data context.
FrxAPI::currentDataContextArray public function
FrxAPI::dataManager public function Returns the data manager service
FrxAPI::dataService public function Return Data Service
FrxAPI::documentManager public function Returns the fornea document manager
FrxAPI::error public function Report an error
FrxAPI::getDataContext public function Get the context of a specific id.
FrxAPI::getDocument public function Get the current document
FrxAPI::getReportFileContents public function Load the contents of a file in the report file system.
FrxAPI::innerXML function Enter description here... 1
FrxAPI::popData public function Pop data off of the stack.
FrxAPI::pushData public function Push data onto the Stack
FrxAPI::report public function Run a report with a particular format. 1
FrxAPI::reportFileSystem public function Get the current report file system.
FrxAPI::setDataContext public function Set Data context by id.
FrxAPI::setDocument public function Change to a specific document type.
FrxAPI::skins public function Get list of skins.
SVG::flush public function Write the output to disk. Overrides DocumentBase::flush
SVG::header public function Default implementation to put in content type based headers. Overrides DocumentBase::header
SVG::__construct public function