[ Index ]

PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008]

title

Body

[close]

/admin/xmldb/actions/view_key_xml/ -> view_key_xml.class.php (source)

   1  <?php // $Id: view_key_xml.class.php,v 1.4 2007/10/10 05:25:29 nicolasconnault Exp $
   2  
   3  ///////////////////////////////////////////////////////////////////////////
   4  //                                                                       //
   5  // NOTICE OF COPYRIGHT                                                   //
   6  //                                                                       //
   7  // Moodle - Modular Object-Oriented Dynamic Learning Environment         //
   8  //          http://moodle.com                                            //
   9  //                                                                       //
  10  // Copyright (C) 1999 onwards Martin Dougiamas        http://dougiamas.com  //
  11  //           (C) 2001-3001 Eloy Lafuente (stronk7) http://contiento.com  //
  12  //                                                                       //
  13  // This program is free software; you can redistribute it and/or modify  //
  14  // it under the terms of the GNU General Public License as published by  //
  15  // the Free Software Foundation; either version 2 of the License, or     //
  16  // (at your option) any later version.                                   //
  17  //                                                                       //
  18  // This program is distributed in the hope that it will be useful,       //
  19  // but WITHOUT ANY WARRANTY; without even the implied warranty of        //
  20  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //
  21  // GNU General Public License for more details:                          //
  22  //                                                                       //
  23  //          http://www.gnu.org/copyleft/gpl.html                         //
  24  //                                                                       //
  25  ///////////////////////////////////////////////////////////////////////////
  26  
  27  /// This class will display the XML for one key being edited
  28  
  29  class view_key_xml extends XMLDBAction {
  30  
  31      /**
  32       * Init method, every subclass will have its own
  33       */
  34      function init() {
  35          parent::init();
  36  
  37      /// Set own custom attributes
  38  
  39      /// Get needed strings
  40          $this->loadStrings(array(
  41          /// 'key' => 'module',
  42          ));
  43      }
  44  
  45      /**
  46       * Invoke method, every class will have its own
  47       * returns true/false on completion, setting both
  48       * errormsg and output as necessary
  49       */
  50      function invoke() {
  51          parent::invoke();
  52  
  53          $result = true;
  54  
  55      /// Set own core attributes
  56          $this->does_generate = ACTION_GENERATE_XML;
  57  
  58      /// These are always here
  59          global $CFG, $XMLDB;
  60  
  61      /// Do the job, setting result as needed
  62  
  63      /// Get the file parameter
  64          $key =  required_param('key', PARAM_PATH);
  65          $table =  required_param('table', PARAM_PATH);
  66          $select = required_param('select', PARAM_ALPHA); //original/edited
  67      /// Get the dir containing the file
  68          $dirpath = required_param('dir', PARAM_PATH);
  69          $dirpath = $CFG->dirroot . stripslashes_safe($dirpath);
  70  
  71      /// Get the correct dir
  72          if ($select == 'original') {
  73              if (!empty($XMLDB->dbdirs)) {
  74                  $base =& $XMLDB->dbdirs[$dirpath];
  75              }
  76          } else if ($select == 'edited') {
  77              if (!empty($XMLDB->editeddirs)) {
  78                  $base =& $XMLDB->editeddirs[$dirpath];
  79              }
  80          } else {
  81              $this->errormsg = 'Cannot access to ' . $select . ' info';
  82              $result = false;
  83          }
  84          if ($base) {
  85          /// Only if the directory exists and it has been loaded
  86              if (!$base->path_exists || !$base->xml_loaded) {
  87                  $this->errormsg = 'Directory ' . $dirpath . ' not loaded';
  88                  return false;
  89              }
  90          } else {
  91              $this->errormsg = 'Problem handling ' . $select . ' files';
  92              return false;
  93          }
  94  
  95      /// Get the structure
  96          if ($result) {
  97              if (!$structure =& $base->xml_file->getStructure()) {
  98                  $this->errormsg = 'Error retrieving ' . $select . ' structure';
  99                  $result = false;
 100              }
 101          }
 102      /// Get the tables
 103          if ($result) {
 104              if (!$tables =& $structure->getTables()) {
 105                  $this->errormsg = 'Error retrieving ' . $select . ' tables';
 106                  $result = false;
 107              }
 108          }
 109      /// Get the table
 110          if ($result && !$t =& $structure->getTable($table)) {
 111              $this->errormsg = 'Error retrieving ' . $table . ' table';
 112              $result = false;
 113          }
 114      /// Get the keys
 115          if ($result) {
 116              if (!$keys =& $t->getKeys()) {
 117                  $this->errormsg = 'Error retrieving ' . $select . ' keys';
 118                  $result = false;
 119              }
 120          }
 121      /// Get the key
 122          if ($result && !$k = $t->getKey($key)) {
 123              $this->errormsg = 'Error retrieving ' . $key . ' key';
 124              $result = false;
 125          }
 126  
 127          if ($result) {
 128          /// Everything is ok. Generate the XML output
 129              $this->output = $k->xmlOutput();
 130          } else {
 131          /// Switch to HTML and error
 132              $this->does_generate = ACTION_GENERATE_HTML;
 133          }
 134  
 135      /// Return ok if arrived here
 136          return $result;
 137      }
 138  }
 139  ?>


Generated: Wed Jan 14 11:33:29 2009 Cross-referenced by PHPXref 0.7