. /** * @package tool * @subpackage xmldb * @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * This class will produce XSL documentation for the loaded XML file * * @package tool * @subpackage xmldb * @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class generate_documentation extends XMLDBAction { /** * Init method, every subclass will have its own */ function init() { parent::init(); // Set own custom attributes $this->sesskey_protected = false; // This action doesn't need sesskey protection // Get needed strings $this->loadStrings(array( 'backtomainview' => 'tool_xmldb', 'documentationintro' => 'tool_xmldb' )); } /** * Invoke method, every class will have its own * returns true/false on completion, setting both * errormsg and output as necessary */ function invoke() { parent::invoke(); $result = true; // Set own core attributes $this->does_generate = ACTION_GENERATE_HTML; // These are always here global $CFG, $XMLDB; // Do the job, setting $result as needed // Get the dir containing the file $dirpath = required_param('dir', PARAM_PATH); $dirpath = $CFG->dirroot . $dirpath; $path = $dirpath.'/install.xml'; if(!file_exists($path) || !is_readable($path)) { return false; } // Add link back to home $b = '

'; $b .= ' [' . $this->str['backtomainview'] . ']'; $b .= '

'; $this->output=$b; $c = '

'; $c .= $this->str['documentationintro']; $c .= '

'; $this->output.=$c; if(class_exists('XSLTProcessor')) { // Transform XML file and display it $doc = new DOMDocument(); $xsl = new XSLTProcessor(); $doc->load(dirname(__FILE__).'/xmldb.xsl'); $xsl->importStyleSheet($doc); $doc->load($path); $this->output.=$xsl->transformToXML($doc); $this->output.=$b; } else { $this->output.=get_string('extensionrequired','tool_xmldb','xsl'); } // Launch postaction if exists (leave this unmodified) if ($this->getPostAction() && $result) { return $this->launch($this->getPostAction()); } return $result; } }