ftimme
2005-11-24 1645bb0b4816828ebc900a997a136d833ff38237

1 files modified
575 ■■■■ changed files
interface/lib/classes/tform_actions.inc.php 575 ●●●● patch | view | raw | blame | history
interface/lib/classes/tform_actions.inc.php
@@ -36,302 +36,305 @@
*/
class tform_actions {
    var $id;
    var $activeTab;
    var $dataRecord;
    var $plugins = array();
    function onLoad() {
        global $app, $conf, $tform_def_file;
        // Loading template classes and initialize template
        if(!is_object($app->tpl)) $app->uses('tpl');
        if(!is_object($app->tform)) $app->uses('tform');
        $app->tpl->newTemplate("tabbed_form.tpl.htm");
        // Load table definition from file
        $app->tform->loadFormDef($tform_def_file);
        // loading plugins
        $next_tab = $app->tform->getNextTab();
        if(is_array($app->tform->formDef["tabs"][$next_tab]["plugins"])) {
            $app->load('plugin_base');
            foreach($app->tform->formDef["tabs"][$next_tab]["plugins"] as $plugin_name => $plugin_settings) {
                $plugin_class = $plugin_settings["class"];
                $app->load($plugin_class);
                $this->plugins[$plugin_name] = new $plugin_class;
                $this->plugins[$plugin_name]->setOptions($plugin_name,$plugin_settings['options']);
                $this->plugins[$plugin_name]->onLoad();
            }
        }
        // Importing ID
        $this->id = intval($_REQUEST["id"]);
        var $id;
        var $activeTab;
        var $dataRecord;
        var $plugins = array();
        if(count($_POST) > 1) {
            $this->dataRecord = $_POST;
            $this->onSubmit();
        } else {
            $this->onShow();
        }
    }
    /**
    * Function called on page submit
    */
    function onSubmit() {
        global $app, $conf;
        // Calling the action functions
        if($this->id > 0) {
            $this->onUpdate();
        } else {
            $this->onInsert();
        }
    }
    /**
    * Function called on data update
    */
    function onUpdate() {
        global $app, $conf;
        $ext_where = '';
        $sql = $app->tform->getSQL($this->dataRecord,$app->tform->getCurrentTab(),'UPDATE',$this->id,$ext_where);
        if($app->tform->errorMessage == '') {
            if(!empty($sql)) {
                $app->db->query($sql);
                if($app->db->errorMessage != '') die($app->db->errorMessage);
            }
            // Call plugin
            foreach($this->plugins as $plugin) {
                $plugin->onInsert();
            }
            if($_REQUEST["next_tab"] == '') {
                if($_SESSION["s"]["form"]["return_to"] != '') {
                    $list_name = $_SESSION["s"]["form"]["return_to"];
                    $redirect = "Location: ".$_SESSION["s"]["list"][$list_name]["parent_script"]."?id=".$_SESSION["s"]["list"][$list_name]["parent_id"]."&next_tab=".$_SESSION["s"]["list"][$list_name]["parent_tab"];
                    $_SESSION["s"]["form"]["return_to"] = '';
                    header($redirect);
                } else {
                    header("Location: ".$app->tform->formDef['list_default']);
                }
                exit;
            } else {
                $this->onShow();
            }
        } else {
            $this->onError();
        }
    }
    /**
    * Function called on data insert
    */
    function onInsert() {
        global $app, $conf;
        $ext_where = '';
        $sql = $app->tform->getSQL($this->dataRecord,$app->tform->getCurrentTab(),'INSERT',$this->id,$ext_where);
        if($app->tform->errorMessage == '') {
            $app->db->query($sql);
            if($app->db->errorMessage != '') die($app->db->errorMessage);
            $this->id = $app->db->insertID();
            // Call plugin
            foreach($this->plugins as $plugin) {
                $plugin->onInsert();
            }
            if($_REQUEST["next_tab"] == '') {
                if($_SESSION["s"]["form"]["return_to"] != '') {
                    $list_name = $_SESSION["s"]["form"]["return_to"];
                    $redirect = "Location: ".$_SESSION["s"]["list"][$list_name]["parent_script"]."?id=".$_SESSION["s"]["list"][$list_name]["parent_id"]."&next_tab=".$_SESSION["s"]["list"][$list_name]["parent_tab"];
                    $_SESSION["s"]["form"]["return_to"] = '';
                    header($redirect);
                } else {
                    header("Location: ".$app->tform->formDef['list_default']);
                }
                exit;
            } else {
                $this->onShow();
            }
        } else {
            $this->onError();
        }
    }
    /**
    * Function called on data insert or update error
    */
    function onError() {
        global $app, $conf;
        $app->tpl->setVar("error","<b>".$app->lng('Error').":</b><br>".$app->tform->errorMessage);
        $app->tpl->setVar($this->dataRecord);
        $this->onShow();
    }
    /**
    * Function called on data delete
    */
    function onDelete() {
        global $app, $conf,$list_def_file,$tform_def_file;
        include_once($list_def_file);
        // Loading tform framework
        if(!is_object($app->tform)) $app->uses('tform');
        // Load table definition from file
        $app->tform->loadFormDef($tform_def_file);
        function onLoad() {
                global $app, $conf, $tform_def_file;
        // importing ID
        $this->id = intval($_REQUEST["id"]);
                // Loading template classes and initialize template
                if(!is_object($app->tpl)) $app->uses('tpl');
                if(!is_object($app->tform)) $app->uses('tform');
        if($this->id > 0) {
            // checking permissions
            if($app->tform->formDef['auth'] == 'yes') {
                if($app->tform->checkPerm($this->id,'d') == false) die("Deletion denied.<br>\r\n");
            }
            $record_old = $app->db->queryOneRecord("SELECT * FROM ".$liste["table"]." WHERE ".$liste["table_idx"]." = ".$this->id);
            // Saving record to datalog when db_history enabled
            if($form["db_history"] == 'yes') {
                $diffrec = array();
                $app->tpl->newTemplate("tabbed_form.tpl.htm");
                foreach($record_old as $key => $val) {
                    // Record has changed
                    $diffrec[$key] = array('old' => $val,
                                               'new' => '');
                }
                // Load table definition from file
                $app->tform->loadFormDef($tform_def_file);
                $diffstr = $app->db->quote(serialize($diffrec));
                $username = $app->db->quote($_SESSION["s"]["user"]["username"]);
                $dbidx = $app->tform->formDef['db_table_idx'].":".$this->id;
                $sql = "INSERT INTO sys_datalog (dbtable,dbidx,action,tstamp,user,data) VALUES ('".$app->tform->formDef['db_table']."','$dbidx','d','".time()."','$username','$diffstr')";
                $app->db->query($sql);
            }
                // loading plugins
                $next_tab = $app->tform->getNextTab();
                if(is_array($app->tform->formDef["tabs"][$next_tab]["plugins"])) {
                        $app->load('plugin_base');
                        foreach($app->tform->formDef["tabs"][$next_tab]["plugins"] as $plugin_name => $plugin_settings) {
                                $plugin_class = $plugin_settings["class"];
                                $app->load($plugin_class);
                                $this->plugins[$plugin_name] = new $plugin_class;
                                $this->plugins[$plugin_name]->setOptions($plugin_name,$plugin_settings['options']);
                                $this->plugins[$plugin_name]->onLoad();
                        }
                }
            $app->db->query("DELETE FROM ".$liste["table"]." WHERE ".$liste["table_idx"]." = ".$this->id);
            // Call plugin
            foreach($this->plugins as $plugin) {
                $plugin->onInsert();
            }
        }
                // Importing ID
                $this->id = intval($_REQUEST["id"]);
        //header("Location: ".$liste["file"]."?PHPSESSID=".$_SESSION["s"]["id"]);
        if($_SESSION["s"]["form"]["return_to"] != '') {
            $list_name = $_SESSION["s"]["form"]["return_to"];
            $redirect = "Location: ".$_SESSION["s"]["list"][$list_name]["parent_script"]."?id=".$_SESSION["s"]["list"][$list_name]["parent_id"]."&next_tab=".$_SESSION["s"]["list"][$list_name]["parent_tab"];
            $_SESSION["s"]["form"]["return_to"] = '';
            header($redirect);
        } else {
            header("Location: ".$liste["file"]);
        }
        exit;
    }
    /**
    * Function called on page show
    */
    function onShow() {
        global $app, $conf;
        // Which tab do we render
        $this->active_tab = $app->tform->getNextTab();
        if($this->id > 0) {
            $this->onShowEdit();
        } else {
            $this->onShowNew();
        }
                if(count($_POST) > 1) {
                        $this->dataRecord = $_POST;
                        $this->onSubmit();
                } else {
                        $this->onShow();
                }
        }
        // make Form and Tabs
        $app->tform->showForm();
        /**
        * Function called on page submit
        */
        // Setting default values
        $app->tpl_defaults();
        // Calling the Plugin onShow Events and set the data in the
        // plugins placeholder in the template
        foreach($this->plugins as $plugin_name => $plugin) {
            $app->tpl->setVar($plugin_name,$plugin->onShow());
        }
        // Parse the templates and send output to the browser
        $this->onShowEnd();
    }
    /**
    * Function called on new record
    */
    function onShowNew() {
        global $app, $conf;
        if($app->tform->errorMessage == '') {
            $record = array();
            $record = $app->tform->getHTML($record, $app->tform->formDef['tab_default'],'NEW');
        } else {
            $record = $app->tform->getHTML($app->tform->encode($_POST,$this->active_tab),$this->active_tab,'EDIT');
        }
        $app->tpl->setVar($record);
    }
    /**
    * Function called on edit record
    */
    function onShowEdit() {
        global $app, $conf;
        // bestehenden Datensatz anzeigen
        if($app->tform->errorMessage == '') {
            if($app->tform->formDef['auth'] == 'no') {
                $sql = "SELECT * FROM ".$app->tform->formDef['db_table']." WHERE ".$app->tform->formDef['db_table_idx']." = ".$this->id;
            } else {
                $sql = "SELECT * FROM ".$app->tform->formDef['db_table']." WHERE ".$app->tform->formDef['db_table_idx']." = ".$this->id." AND ".$app->tform->getAuthSQL('u');
            }
            if(!$record = $app->db->queryOneRecord($sql)) die("You dont have the permission to view this record or this record does not exist.");
        } else {
            $record = $app->tform->encode($_POST,$this->active_tab);
        }
        $this->dataRecord = $record;
        // Userdaten umwandeln
        $record = $app->tform->getHTML($record, $this->active_tab,'EDIT');
        $record['id'] = $this->id;
        $app->tpl->setVar($record);
    }
    function onShowEnd() {
        global $app, $conf;
        // Template parsen
        $app->tpl->pparse();
    }
        function onSubmit() {
                global $app, $conf;
                // Calling the action functions
                if($this->id > 0) {
                        $this->onUpdate();
                } else {
                        $this->onInsert();
                }
        }
        /**
        * Function called on data update
        */
        function onUpdate() {
                global $app, $conf;
                $ext_where = '';
                $sql = $app->tform->getSQL($this->dataRecord,$app->tform->getCurrentTab(),'UPDATE',$this->id,$ext_where);
                if($app->tform->errorMessage == '') {
                        if(!empty($sql)) {
                                $app->db->query($sql);
                                if($app->db->errorMessage != '') die($app->db->errorMessage);
                        }
                        // Call plugin
                        foreach($this->plugins as $plugin) {
                                $plugin->onInsert();
                        }
                        if($_REQUEST["next_tab"] == '') {
                                if($_SESSION["s"]["form"]["return_to"] != '') {
                                        $list_name = $_SESSION["s"]["form"]["return_to"];
                                        $redirect = "Location: ".$_SESSION["s"]["list"][$list_name]["parent_script"]."?id=".$_SESSION["s"]["list"][$list_name]["parent_id"]."&next_tab=".$_SESSION["s"]["list"][$list_name]["parent_tab"];
                                        $_SESSION["s"]["form"]["return_to"] = '';
                                        session_write_close();
                                        header($redirect);
                                } else {
                                    header("Location: ".$app->tform->formDef['list_default']);
                                }
                        exit;
                    } else {
                                $this->onShow();
                        }
                } else {
                        $this->onError();
                }
        }
        /**
        * Function called on data insert
        */
        function onInsert() {
                global $app, $conf;
                $ext_where = '';
                $sql = $app->tform->getSQL($this->dataRecord,$app->tform->getCurrentTab(),'INSERT',$this->id,$ext_where);
                if($app->tform->errorMessage == '') {
                        $app->db->query($sql);
                        if($app->db->errorMessage != '') die($app->db->errorMessage);
                        $this->id = $app->db->insertID();
                        // Call plugin
                        foreach($this->plugins as $plugin) {
                                $plugin->onInsert();
                        }
                        if($_REQUEST["next_tab"] == '') {
                            if($_SESSION["s"]["form"]["return_to"] != '') {
                                        $list_name = $_SESSION["s"]["form"]["return_to"];
                                        $redirect = "Location: ".$_SESSION["s"]["list"][$list_name]["parent_script"]."?id=".$_SESSION["s"]["list"][$list_name]["parent_id"]."&next_tab=".$_SESSION["s"]["list"][$list_name]["parent_tab"];
                                        $_SESSION["s"]["form"]["return_to"] = '';
                                        session_write_close();
                                        header($redirect);
                                } else {
                                    header("Location: ".$app->tform->formDef['list_default']);
                                }
                        exit;
                    } else {
                                $this->onShow();
                        }
                } else {
                        $this->onError();
                }
        }
        /**
        * Function called on data insert or update error
        */
        function onError() {
                global $app, $conf;
                $app->tpl->setVar("error","<b>".$app->lng('Error').":</b><br>".$app->tform->errorMessage);
                $app->tpl->setVar($this->dataRecord);
                $this->onShow();
        }
        /**
        * Function called on data delete
        */
        function onDelete() {
                global $app, $conf,$list_def_file,$tform_def_file;
                include_once($list_def_file);
                // Loading tform framework
                if(!is_object($app->tform)) $app->uses('tform');
                // Load table definition from file
                $app->tform->loadFormDef($tform_def_file);
                // importing ID
                $this->id = intval($_REQUEST["id"]);
                if($this->id > 0) {
                        // checking permissions
                        if($app->tform->formDef['auth'] == 'yes') {
                                if($app->tform->checkPerm($this->id,'d') == false) die("Deletion denied.<br>\r\n");
                        }
                        $record_old = $app->db->queryOneRecord("SELECT * FROM ".$liste["table"]." WHERE ".$liste["table_idx"]." = ".$this->id);
                        // Saving record to datalog when db_history enabled
                        if($form["db_history"] == 'yes') {
                                $diffrec = array();
                                foreach($record_old as $key => $val) {
                                        // Record has changed
                                        $diffrec[$key] = array('old' => $val,
                                                                                           'new' => '');
                                }
                                $diffstr = $app->db->quote(serialize($diffrec));
                                $username = $app->db->quote($_SESSION["s"]["user"]["username"]);
                                $dbidx = $app->tform->formDef['db_table_idx'].":".$this->id;
                                $sql = "INSERT INTO sys_datalog (dbtable,dbidx,action,tstamp,user,data) VALUES ('".$app->tform->formDef['db_table']."','$dbidx','d','".time()."','$username','$diffstr')";
                                $app->db->query($sql);
                        }
                        $app->db->query("DELETE FROM ".$liste["table"]." WHERE ".$liste["table_idx"]." = ".$this->id);
                        // Call plugin
                        foreach($this->plugins as $plugin) {
                                $plugin->onInsert();
                        }
                }
                //header("Location: ".$liste["file"]."?PHPSESSID=".$_SESSION["s"]["id"]);
                if($_SESSION["s"]["form"]["return_to"] != '') {
                        $list_name = $_SESSION["s"]["form"]["return_to"];
                        $redirect = "Location: ".$_SESSION["s"]["list"][$list_name]["parent_script"]."?id=".$_SESSION["s"]["list"][$list_name]["parent_id"]."&next_tab=".$_SESSION["s"]["list"][$list_name]["parent_tab"];
                        $_SESSION["s"]["form"]["return_to"] = '';
                        session_write_close();
                        header($redirect);
                } else {
                    header("Location: ".$liste["file"]);
                }
                exit;
        }
        /**
        * Function called on page show
        */
        function onShow() {
                global $app, $conf;
                // Which tab do we render
                $this->active_tab = $app->tform->getNextTab();
                if($this->id > 0) {
                        $this->onShowEdit();
                } else {
                        $this->onShowNew();
                }
                // make Form and Tabs
                $app->tform->showForm();
                // Setting default values
                $app->tpl_defaults();
                // Calling the Plugin onShow Events and set the data in the
                // plugins placeholder in the template
                foreach($this->plugins as $plugin_name => $plugin) {
                        $app->tpl->setVar($plugin_name,$plugin->onShow());
                }
                // Parse the templates and send output to the browser
                $this->onShowEnd();
        }
        /**
        * Function called on new record
        */
        function onShowNew() {
                global $app, $conf;
                if($app->tform->errorMessage == '') {
                        $record = array();
                        $record = $app->tform->getHTML($record, $app->tform->formDef['tab_default'],'NEW');
                } else {
                        $record = $app->tform->getHTML($app->tform->encode($_POST,$this->active_tab),$this->active_tab,'EDIT');
                }
                $app->tpl->setVar($record);
        }
        /**
        * Function called on edit record
        */
        function onShowEdit() {
                global $app, $conf;
                // bestehenden Datensatz anzeigen
                if($app->tform->errorMessage == '') {
                        if($app->tform->formDef['auth'] == 'no') {
                                $sql = "SELECT * FROM ".$app->tform->formDef['db_table']." WHERE ".$app->tform->formDef['db_table_idx']." = ".$this->id;
                        } else {
                                $sql = "SELECT * FROM ".$app->tform->formDef['db_table']." WHERE ".$app->tform->formDef['db_table_idx']." = ".$this->id." AND ".$app->tform->getAuthSQL('u');
                        }
                        if(!$record = $app->db->queryOneRecord($sql)) die("You dont have the permission to view this record or this record does not exist.");
                } else {
                        $record = $app->tform->encode($_POST,$this->active_tab);
                }
                $this->dataRecord = $record;
            // Userdaten umwandeln
                $record = $app->tform->getHTML($record, $this->active_tab,'EDIT');
                $record['id'] = $this->id;
                $app->tpl->setVar($record);
        }
        function onShowEnd() {
                global $app, $conf;
                // Template parsen
                $app->tpl->pparse();
        }
}
?>