Server IP : 85.214.239.14 / Your IP : 3.142.199.54 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/3/root/var/www/wordpress/phpMyAdmin/libraries/classes/Plugins/Schema/Dia/ |
Upload File : |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Classes to create relation schema in Dia format. * * @package PhpMyAdmin */ declare(strict_types=1); namespace PhpMyAdmin\Plugins\Schema\Dia; use PhpMyAdmin\Core; use PhpMyAdmin\Response; use XMLWriter; /** * This Class inherits the XMLwriter class and * helps in developing structure of DIA Schema Export * * @package PhpMyAdmin * @access public * @see https://www.php.net/manual/en/book.xmlwriter.php */ class Dia extends XMLWriter { /** * The "Dia" constructor * * Upon instantiation This starts writing the Dia XML document * * @see XMLWriter::openMemory(),XMLWriter::setIndent(),XMLWriter::startDocument() */ public function __construct() { $this->openMemory(); /* * Set indenting using three spaces, * so output is formatted */ $this->setIndent(true); $this->setIndentString(' '); /* * Create the XML document */ $this->startDocument('1.0', 'UTF-8'); } /** * Starts Dia Document * * dia document starts by first initializing dia:diagram tag * then dia:diagramdata contains all the attributes that needed * to define the document, then finally a Layer starts which * holds all the objects. * * @param string $paper the size of the paper/document * @param float $topMargin top margin of the paper/document in cm * @param float $bottomMargin bottom margin of the paper/document in cm * @param float $leftMargin left margin of the paper/document in cm * @param float $rightMargin right margin of the paper/document in cm * @param string $orientation orientation of the document, portrait or landscape * * @return void * * @access public * @see XMLWriter::startElement(),XMLWriter::writeAttribute(), * XMLWriter::writeRaw() */ public function startDiaDoc( $paper, $topMargin, $bottomMargin, $leftMargin, $rightMargin, $orientation ) { if ($orientation == 'P') { $isPortrait = 'true'; } else { $isPortrait = 'false'; } $this->startElement('dia:diagram'); $this->writeAttribute('xmlns:dia', 'http://www.lysator.liu.se/~alla/dia/'); $this->startElement('dia:diagramdata'); $this->writeRaw( '<dia:attribute name="background"> <dia:color val="#ffffff"/> </dia:attribute> <dia:attribute name="pagebreak"> <dia:color val="#000099"/> </dia:attribute> <dia:attribute name="paper"> <dia:composite type="paper"> <dia:attribute name="name"> <dia:string>#' . $paper . '#</dia:string> </dia:attribute> <dia:attribute name="tmargin"> <dia:real val="' . $topMargin . '"/> </dia:attribute> <dia:attribute name="bmargin"> <dia:real val="' . $bottomMargin . '"/> </dia:attribute> <dia:attribute name="lmargin"> <dia:real val="' . $leftMargin . '"/> </dia:attribute> <dia:attribute name="rmargin"> <dia:real val="' . $rightMargin . '"/> </dia:attribute> <dia:attribute name="is_portrait"> <dia:boolean val="' . $isPortrait . '"/> </dia:attribute> <dia:attribute name="scaling"> <dia:real val="1"/> </dia:attribute> <dia:attribute name="fitto"> <dia:boolean val="false"/> </dia:attribute> </dia:composite> </dia:attribute> <dia:attribute name="grid"> <dia:composite type="grid"> <dia:attribute name="width_x"> <dia:real val="1"/> </dia:attribute> <dia:attribute name="width_y"> <dia:real val="1"/> </dia:attribute> <dia:attribute name="visible_x"> <dia:int val="1"/> </dia:attribute> <dia:attribute name="visible_y"> <dia:int val="1"/> </dia:attribute> <dia:composite type="color"/> </dia:composite> </dia:attribute> <dia:attribute name="color"> <dia:color val="#d8e5e5"/> </dia:attribute> <dia:attribute name="guides"> <dia:composite type="guides"> <dia:attribute name="hguides"/> <dia:attribute name="vguides"/> </dia:composite> </dia:attribute>' ); $this->endElement(); $this->startElement('dia:layer'); $this->writeAttribute('name', 'Background'); $this->writeAttribute('visible', 'true'); $this->writeAttribute('active', 'true'); } /** * Ends Dia Document * * @return void * @access public * @see XMLWriter::endElement(),XMLWriter::endDocument() */ public function endDiaDoc() { $this->endElement(); $this->endDocument(); } /** * Output Dia Document for download * * @param string $fileName name of the dia document * * @return void * @access public * @see XMLWriter::flush() */ public function showOutput($fileName) { if (ob_get_clean()) { ob_end_clean(); } $output = $this->flush(); Response::getInstance()->disable(); Core::downloadHeader( $fileName, 'application/x-dia-diagram', strlen($output) ); print $output; } }