xmldbaction.class.php

来自「很棒的在线教学系统」· PHP 代码 · 共 192 行

PHP
192
字号
<?php // $Id: XMLDBAction.class.php,v 1.4 2007/10/10 05:25:31 nicolasconnault Exp $/////////////////////////////////////////////////////////////////////////////                                                                       //// NOTICE OF COPYRIGHT                                                   ////                                                                       //// Moodle - Modular Object-Oriented Dynamic Learning Environment         ////          http://moodle.com                                            ////                                                                       //// Copyright (C) 1999 onwards Martin Dougiamas        http://dougiamas.com  ////           (C) 2001-3001 Eloy Lafuente (stronk7) http://contiento.com  ////                                                                       //// This program is free software; you can redistribute it and/or modify  //// it under the terms of the GNU General Public License as published by  //// the Free Software Foundation; either version 2 of the License, or     //// (at your option) any later version.                                   ////                                                                       //// This program is distributed in the hope that it will be useful,       //// but WITHOUT ANY WARRANTY; without even the implied warranty of        //// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //// GNU General Public License for more details:                          ////                                                                       ////          http://www.gnu.org/copyleft/gpl.html                         ////                                                                       //////////////////////////////////////////////////////////////////////////////// This is the main action class. It implements all the basic/// functionalities to be shared by each action.class XMLDBAction {    var $does_generate;  //Type of value returned by the invoke method                         //ACTION_GENERATE_HTML have contents to show                         //set by each specialized invoke    var $title;          //Title of the Action (class name, by default)                         //set by parent init automatically    var $str;            //Strings used by the action                         //set by each specialized init, calling loadStrings    var $output;         //Output of the action                         //set by each specialized invoke, get with getOutput    var $errormsg;       //Last Error produced. Check when any invoke returns false                         //get with getError    var $postaction;     //Action to execute at the end of the invoke script    /**     * Constructor     */    function XMLDBAction() {        $this->init();    }    /**     * Constructor to keep PHP5 happy     */    function __construct() {        $this->XMLDBAction();    }    /**     * Init method, every subclass will have its own,     * always calling the parent one     */    function init() {        $this->does_generate = ACTION_NONE;        $this->title     = strtolower(get_class($this));        $this->str       = array();        $this->output    = NULL;        $this->errormsg  = NULL;        $this->subaction = NULL;    }    /**     * returns the type of output of the file     */    function getDoesGenerate() {        return $this->does_generate;    }    /**     * getError method, returns the last error string.     * Used if the invoke() methods returns false     */    function getError() {        return $this->errormsg;    }    /**     * getOutput method, returns the output generated by the action.     * Used after execution of the invoke() methods if they return true     */    function getOutput() {        return $this->output;    }    /**     * getPostAtion method, returns the action to launch after executing     * another one     */    function getPostAction() {        return $this->postaction;    }    /**     * getTitle method returns the title of the action (that is part     * of the $str array attribute     */    function getTitle() {        return $this->str['title'];    }    /**     * loadStrings method, loads the required strings specified in the     * array parameter     */    function loadStrings($strings) {    /// Load some commonly used strings        $this->str['title'] = get_string($this->title, 'xmldb');    /// Now process the $strings array loading it in the $str atribute        if ($strings) {            foreach ($strings as $key => $module) {                $this->str[$key] = get_string($key, $module);            }        }    }    /**     * main invoke method, it simply sets the postaction attribute     * if possible     */    function invoke() {        global $SESSION;    /// If we are used any dir, save it in the lastused session object    /// Some actions can use it to perform positioning        if ($lastused = optional_param ('dir', NULL, PARAM_PATH)) {            $SESSION->lastused = stripslashes_safe($lastused);        }        $this->postaction = optional_param ('postaction', NULL, PARAM_ALPHAEXT);    /// Avoid being recursive        if ($this->title == $this->postaction) {            $this->postaction = NULL;        }    }    /**     * launch method, used to easily call invoke methods between actions     */    function launch($action) {        global $CFG;    /// Get the action path and invoke it        $actionsroot = "$CFG->dirroot/$CFG->admin/xmldb/actions";        $actionclass = $action . '.class.php';        $actionpath = "$actionsroot/$action/$actionclass";    /// Load and invoke the proper action        $result = false;        if (file_exists($actionpath) && is_readable($actionpath)) {            require_once($actionpath);            if ($xmldb_action = new $action) {                $result = $xmldb_action->invoke();                if ($result) {                    if ($xmldb_action->does_generate != ACTION_NONE &&                        $xmldb_action->getOutput()) {                        $this->does_generate = $xmldb_action->does_generate;                        $this->title = $xmldb_action->title;                        $this->str = $xmldb_action->str;                        $this->output .= $xmldb_action->getOutput();                    }                } else {                    $this->errormsg = $xmldb_action->getError();                }            } else {                $this->errormsg = "Error: cannot instantiate class (actions/$action/$actionclass)";            }        } else {            $this->errormsg = "Error: wrong action specified ($action)";        }        return $result;    }}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?