From e1ceb050e19c7574bca146a8da7047ee4ff456b5 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Sun, 10 Jul 2016 05:02:35 -0400 Subject: [PATCH] Merge branch 'stable-3.1' --- interface/lib/classes/tform_actions.inc.php | 759 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 507 insertions(+), 252 deletions(-) diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php index e6004cb..da12ac8 100644 --- a/interface/lib/classes/tform_actions.inc.php +++ b/interface/lib/classes/tform_actions.inc.php @@ -1,7 +1,7 @@ <?php /* -Copyright (c) 2005, Till Brehm, projektfarm Gmbh +Copyright (c) 2007, Till Brehm, projektfarm Gmbh All rights reserved. Redistribution and use in source and binary forms, with or without modification, @@ -28,326 +28,581 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/** -* Action framework for the tform library. -* -* @author Till Brehm <t.brehm@scrigo.org> -* @copyright Copyright © 2005, Till Brehm -*/ - class tform_actions { - var $id; - var $activeTab; - var $dataRecord; - var $plugins = array(); + public $id; + public $activeTab; + public $dataRecord; + public $plugins = array(); + public $oldDataRecord; // This array is only filled during updates and when db_history is enabled. - function onLoad() { - global $app, $conf, $tform_def_file; + 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'); + // 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"); + $app->tpl->newTemplate("tabbed_form.tpl.htm"); - // Load table definition from file - $app->tform->loadFormDef($tform_def_file); + // Load table definition from file + //$app->tform->loadFormDef($tform_def_file, (isset($_SESSION['s']['module']['name']) ? $_SESSION['s']['module']['name'] : '')); + $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 = (isset($_REQUEST["id"]))?$app->functions->intval($_REQUEST["id"]):0; - // Importing ID - $this->id = intval($_REQUEST["id"]); + // show print version of the form + if(isset($_GET["print_form"]) && $_GET["print_form"] == 1) { + die('Function disabled.'); + $this->onPrintForm(); + } - if(count($_POST) > 1) { - $this->dataRecord = $_POST; - $this->onSubmit(); - } else { - $this->onShow(); - } - } + // send this form by email + if(isset($_GET["send_form_by_mail"]) && $_GET["send_form_by_mail"] == 1) { + die('Function disabled.'); + $this->onMailSendForm(); + } - /** - * Function called on page submit - */ + if(count($_POST) > 1) { + $this->dataRecord = $_POST; + $this->onSubmit(); + } else { + $this->onShow(); + } + } - function onSubmit() { - global $app, $conf; + /** + * Function called on page submit + */ - // Calling the action functions - if($this->id > 0) { - $this->onUpdate(); - } else { - $this->onInsert(); - } - } - /** - * Function called on data update - */ + function onSubmit() { + global $app, $conf; - function onUpdate() { - global $app, $conf; + // check if the client is locked - he may not change anything, then. + if(!$app->auth->is_admin()) { + $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); + $client = $app->db->queryOneRecord("SELECT client.locked FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); + if(is_array($client) && $client['locked'] == 'y') { + $app->tform->errorMessage .= $app->lng("client_you_are_locked")."<br />"; + } + } - $ext_where = ''; - $sql = $app->tform->getSQL($this->dataRecord,$app->tform->getCurrentTab(),'UPDATE',$this->id,$ext_where); - if($app->tform->errorMessage == '') { + // Calling the action functions + if($this->id > 0) { + $app->tform->action == 'EDIT'; + $this->onUpdate(); + } else { + $app->tform->action == 'NEW'; + $this->onInsert(); + } + } + + + /** + * Function called on data update + */ + function onUpdate() { + global $app, $conf; + + $this->onBeforeUpdate(); + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_before_update', $this); + + $ext_where = ''; + $sql = $app->tform->getSQL($this->dataRecord, $app->tform->getCurrentTab(), 'UPDATE', $this->id, $ext_where); + if($app->tform->errorMessage == '') { + + $this->oldDataRecord = $app->tform->getDataRecord($this->id); + + // Save record in database + $this->onUpdateSave($sql); + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_update_save', array('page_form'=>$this, 'sql'=>$sql)); + + // loading plugins + $next_tab = $app->tform->getCurrentTab(); + $this->loadPlugins($next_tab); + + // Call plugin + foreach($this->plugins as $plugin) { + $plugin->onUpdate(); + } + + $this->onAfterUpdate(); + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_after_update', $this); + + // Write data history (sys_datalog) + if($app->tform->formDef['db_history'] == 'yes') { + $new_data_record = $app->tform->getDataRecord($this->id); + $app->tform->datalogSave('UPDATE', $this->id, $this->oldDataRecord, $new_data_record); + unset($new_data_record); + unset($old_data_record); + } + + if($_REQUEST["next_tab"] == '') { + $list_name = $_SESSION["s"]["form"]["return_to"]; + // When a list is embedded inside of a form + + //if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_id"] != $this->id && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) { + if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) { + $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); + // When a returnto variable is set + } elseif (isset($_SESSION["s"]["form"]["return_to_url"]) && $_SESSION["s"]["form"]["return_to_url"] != '') { + $redirect = $_SESSION["s"]["form"]["return_to_url"]; + $_SESSION["s"]["form"]["return_to_url"] = ''; + session_write_close(); + header("Location: ".$redirect); + exit; + // Use the default list of the form + } else { + header("Location: ".$app->tform->formDef['list_default']); + } + exit; + } else { + $this->onShow(); + } + } else { + $this->onError(); + } + } + + /* + Save record in database + */ + + function onUpdateSave($sql) { + global $app; + if(!empty($sql) && !$app->tform->isReadonlyTab($app->tform->getCurrentTab(), $this->id)) { + $app->db->query($sql); + if($app->db->errorMessage != '') die($app->db->errorMessage); + } + } + + + + + + /** + * Function called on data insert + */ + function onInsert() { + global $app, $conf; + + $this->onBeforeInsert(); + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_before_insert', $this); + + $ext_where = ''; + $sql = $app->tform->getSQL($this->dataRecord, $app->tform->getCurrentTab(), 'INSERT', $this->id, $ext_where); + if($app->tform->errorMessage == '') { + + $this->id = $this->onInsertSave($sql); + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_insert_save', array('page_form'=>$this, 'sql'=>$sql)); + + // loading plugins + $next_tab = $app->tform->getCurrentTab(); + $this->loadPlugins($next_tab); + + // Call plugin + foreach($this->plugins as $plugin) { + $plugin->onInsert(); + } + + $this->onAfterInsert(); + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_after_insert', $this); + + // Write data history (sys_datalog) + if($app->tform->formDef['db_history'] == 'yes') { + $new_data_record = $app->tform->getDataRecord($this->id); + $app->tform->datalogSave('INSERT', $this->id, array(), $new_data_record); + unset($new_data_record); + } + + + if($_REQUEST["next_tab"] == '') { + $list_name = $_SESSION["s"]["form"]["return_to"]; + // if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_id"] != $this->id && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) { + if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) { + $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); + exit; + } elseif ($_SESSION["s"]["form"]["return_to_url"] != '') { + $redirect = $_SESSION["s"]["form"]["return_to_url"]; + $_SESSION["s"]["form"]["return_to_url"] = ''; + session_write_close(); + header("Location: ".$redirect); + exit; + } else { + header("Location: ".$app->tform->formDef['list_default']); + } + exit; + } else { + $this->onShow(); + } + } else { + $this->onError(); + } + } + + /* + Save record in database + */ + + function onInsertSave($sql) { + global $app, $conf; + $app->db->query($sql); + if($app->db->errorMessage != '') die($app->db->errorMessage); + return $app->db->insertID(); + } + + function onBeforeUpdate() { + global $app, $conf; + } + + function onBeforeInsert() { + global $app, $conf; + } + + function onAfterUpdate() { + global $app, $conf; + } + + function onAfterInsert() { + global $app, $conf; + } + + + /** + * Function called on data insert or update error + */ + function onError() { + global $app, $conf; + + $app->tpl->setVar("error", "<li>".$app->tform->errorMessage."</li>"); + $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 = $app->functions->intval($_REQUEST["id"]); + + if($this->id > 0) { + + // checking permissions + if($app->tform->formDef['auth'] == 'yes' && $_SESSION["s"]["user"]["typ"] != 'admin') { + if($app->tform->checkPerm($this->id, 'd') == false) $app->error($app->lng('error_no_delete_permission')); + } + + $this->dataRecord = $app->tform->getDataRecord($this->id); + + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_check_delete', $this); + $this->onBeforeDelete(); + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_before_delete', $this); + + // Saving record to datalog when db_history enabled + if($app->tform->formDef["db_history"] == 'yes') { + //$old_data_record = $app->tform->getDataRecord($this->id); + $app->tform->datalogSave('DELETE', $this->id, $this->dataRecord, array()); + } + + $app->db->query("DELETE FROM ?? WHERE ?? = ? LIMIT 1", $app->tform->formDef['db_table'], $app->tform->formDef['db_table_idx'], $this->id); + + + // loading plugins + $next_tab = $app->tform->getCurrentTab(); + $this->loadPlugins($next_tab); + + + // Call plugin + foreach($this->plugins as $plugin) { + $plugin->onDelete(); + } + + $this->onAfterDelete(); + $app->plugin->raiseEvent($_SESSION['s']['module']['name'].':'.$app->tform->formDef['name'].':'.'on_after_delete', $this); + } + + //header("Location: ".$liste["file"]."?PHPSESSID=".$_SESSION["s"]["id"]); + $list_name = $_SESSION["s"]["form"]["return_to"]; + if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_id"] != $this->id && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) { + $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 onBeforeDelete() { + global $app, $conf; + } + + function onAfterDelete() { + global $app, $conf; + } + + + + + + /** + * Function to print the form content + */ + function onPrintForm() { + global $app, $conf; - if(!empty($sql)) { - $app->db->query($sql); - if($app->db->errorMessage != '') die($app->db->errorMessage); - } + if($app->tform->formDef['template_print'] == '') die('No print template available.'); - // Call plugin - foreach($this->plugins as $plugin) { - $plugin->onInsert(); - } + $app->tpl->newTemplate("print.tpl.htm"); + $app->tpl->setInclude("content_tpl", $app->tform->formDef['template_print']); - $this->onAfterUpdate(); + if($app->tform->formDef['auth'] == 'no') { + $sql = "SELECT * FROM ?? WHERE ?? = ?"; + } else { + $sql = "SELECT * FROM ?? WHERE ?? = ? AND ".$app->tform->getAuthSQL('r'); + } + if(!$record = $app->db->queryOneRecord($sql, $app->tform->formDef['db_table'], $app->tform->formDef['db_table_idx'], $this->id)) $app->error($app->lng('error_no_view_permission')); - if($_REQUEST["next_tab"] == '') { - $list_name = $_SESSION["s"]["form"]["return_to"]; - if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_id"] != $this->id && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) { - $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(); - } - } + $record["datum"] = date("d.m.Y"); - /** - * Function called on data insert - */ + $app->tpl->setVar($app->tform->wordbook); - function onInsert() { - global $app, $conf; + $app->tpl->setVar($record); + $app->tpl_defaults(); + $app->tpl->pparse(); + exit; - $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(); - } - $this->onAfterInsert(); - if($_REQUEST["next_tab"] == '') { - $list_name = $_SESSION["s"]["form"]["return_to"]; - if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_id"] != $this->id && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) { - $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 onAfterUpdate() { - global $app, $conf; - } - function onAfterInsert() { - global $app, $conf; - } + /** + * Function to print the form content + */ + function onMailSendForm() { + global $app, $conf; + if($app->tform->formDef['template_mailsend'] == '') die('No print template available.'); - /** - * Function called on data insert or update error - */ + if($_POST["email"] == '' && $_POST["sender"] == '') { + // Zeige Formular zum versenden an. + $app->tpl->newTemplate("form.tpl.htm"); + $app->tpl->setInclude("content_tpl", $app->tform->formDef['template_mailsend']); + $app->tpl->setVar('show_form', 1); + $app->tpl->setVar("form_action", $app->tform->formDef['action'].'?send_form_by_mail=1'); + $app->tpl->setVar("id", $this->id); + $app->tpl_defaults(); + $app->tpl->pparse(); + exit; + } else { + $app->tpl->newTemplate("mail.tpl.htm"); + $app->tpl->setInclude("content_tpl", $app->tform->formDef['template_mailsend']); + $app->tpl->setVar('show_mail', 1); + if($app->tform->formDef['auth'] == 'no') { + $sql = "SELECT * FROM ?? WHERE ?? = ?"; + } else { + $sql = "SELECT * FROM ?? WHERE ?? = ? AND ".$app->tform->getAuthSQL('r'); + } + if(!$record = $app->db->queryOneRecord($sql, $app->tform->formDef['db_table'], $app->tform->formDef['db_table_idx'], $this->id)) $app->error($app->lng('error_no_view_permission')); - function onError() { - global $app, $conf; + $record["datum"] = date("d.m.Y"); + $record["mailmessage"] = $_POST["message"]; - $app->tpl->setVar("error","<b>".$app->lng('Error').":</b><br>".$app->tform->errorMessage); - $app->tpl->setVar($this->dataRecord); - $this->onShow(); - } + $app->tpl->setVar($app->tform->wordbook); - /** - * Function called on data delete - */ + $app->tpl->setVar($record); + $app->tpl_defaults(); - function onDelete() { - global $app, $conf,$list_def_file,$tform_def_file; + $email_message = $app->tpl->grab(); + $email = $_POST["email"]; + $sender = $_POST["sender"]; - include_once($list_def_file); + $headers = "MIME-Version: 1.0\n"; + $headers .= "Content-type: text/html; charset=iso-8859-1\n"; + $headers .= "From: $sender\n"; - // Loading tform framework - if(!is_object($app->tform)) $app->uses('tform'); + if (!preg_match('/^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+' . '@' . '([-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.)+' . '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$/', $sender)) { + $sender = 'noreply@iprguard.de'; + } - // Load table definition from file - $app->tform->loadFormDef($tform_def_file); + if (preg_match('/^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+' . '@' . '([-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.)+' . '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$/', $email)) { + mail($email, 'Domainrecherche Statement '.$record["domain"], $email_message, $headers); + } + echo "<p> </p><p>Email wurde versand.</p>"; + exit; + } - // 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) $app->error($app->lng('error_no_delete_permission')); - } + if($app->tform->formDef['auth'] == 'no') { + $sql = "SELECT * FROM ?? WHERE ?? = ?"; + } else { + $sql = "SELECT * FROM ?? WHERE ?? = ? AND ".$app->tform->getAuthSQL('r'); + } + if(!$record = $app->db->queryOneRecord($sql, $app->tform->formDef['db_table'], $app->tform->formDef['db_table_idx'], $this->id)) $app->error($app->lng('error_no_view_permission')); - $record_old = $app->db->queryOneRecord("SELECT * FROM ".$liste["table"]." WHERE ".$liste["table_idx"]." = ".$this->id); + $record["datum"] = date("d.m.Y"); - // Saving record to datalog when db_history enabled - if($form["db_history"] == 'yes') { - $diffrec = array(); + $app->tpl->setVar($app->tform->wordbook); - foreach($record_old as $key => $val) { - // Record has changed - $diffrec[$key] = array('old' => $val, - 'new' => ''); - } + $app->tpl->setVar($record); + $app->tpl_defaults(); + $app->tpl->pparse(); + exit; - $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(); - } - } + /** + * Function called on page show + */ + function onShow() { + global $app, $conf; - //header("Location: ".$liste["file"]."?PHPSESSID=".$_SESSION["s"]["id"]); - $list_name = $_SESSION["s"]["form"]["return_to"]; - if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_id"] != $this->id && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) { - $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; + // Which tab do we render + $this->active_tab = $app->tform->getNextTab(); - } + if($this->id > 0) { + $this->onShowEdit(); + } else { + $this->onShowNew(); + } - /** - * Function called on page show - */ + // make Form and Tabs + $app->tform->showForm(); - function onShow() { - global $app, $conf; + // Setting default values + $app->tpl_defaults(); - // Which tab do we render - $this->active_tab = $app->tform->getNextTab(); + // Show the navigation bar of the form + if(isset($app->tform->formDef['navibar']) && $app->tform->formDef['navibar'] == 'yes') { + $navibar = ''; + if($app->tform->formDef['template_print'] != '') { + $navibar .= '<a href="'.$app->tform->formDef['action'].'?id='.$this->id.'&print_form=1" target="_blank"><img src="../themes/iprg/icons/printer.png" border="0" alt="Drucken" /></a> '; + } + if($app->tform->formDef['template_mailsend'] != '') { + $navibar .= "<a href=\"#\" onclick=\"window.open('".$app->tform->formDef['action'].'?id='.$this->id."&send_form_by_mail=1','send','width=370,height=240')\"><img src=\"../themes/iprg/icons/mail.png\" border=\"0\" alt=\"Als E-Mail versenden\" /></a>"; + } + $app->tpl->setVar('form_navibar', $navibar); + } - if($this->id > 0) { - $this->onShowEdit(); - } else { - $this->onShowNew(); - } + if(isset($_SESSION['show_info_msg'])) { + $app->tpl->setVar('show_info_msg', $_SESSION['show_info_msg']); + unset($_SESSION['show_info_msg']); + } + if(isset($_SESSION['show_error_msg'])) { + $app->tpl->setVar('show_error_msg', $_SESSION['show_error_msg']); + unset($_SESSION['show_error_msg']); + } - // make Form and Tabs - $app->tform->showForm(); + // loading plugins + $this->loadPlugins($this->active_tab); - // 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()); + } - // 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(); - // Parse the templates and send output to the browser - $this->onShowEnd(); + } - } - /** - * Function called on new record - */ + /** + * Function called on new record + */ + function onShowNew() { + global $app, $conf; - 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'); + } - 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); + } - $app->tpl->setVar($record); - } - /** - * Function called on edit record - */ + /** + * Function called on edit record + */ + function onShowEdit() { + global $app, $conf; - function onShowEdit() { - global $app, $conf; + // bestehenden Datensatz anzeigen + if($app->tform->errorMessage == '') { + if($app->tform->formDef['auth'] == 'yes' && $_SESSION["s"]["user"]["typ"] != 'admin') { + $sql = "SELECT * FROM ?? WHERE ?? = ? AND ".$app->tform->getAuthSQL('r'); + } else { + $sql = "SELECT * FROM ?? WHERE ?? = ?"; + } + if(!$record = $app->db->queryOneRecord($sql, $app->tform->formDef['db_table'], $app->tform->formDef['db_table_idx'], $this->id)) $app->error($app->lng('error_no_view_permission')); + } else { + // $record = $app->tform->encode($_POST,$this->active_tab); + $record = $app->tform->encode($this->dataRecord, $this->active_tab, false); + } - // 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)) $app->error($app->lng('error_no_view_permission')); - } else { - $record = $app->tform->encode($_POST,$this->active_tab); - } + $this->dataRecord = $record; - $this->dataRecord = $record; + // Userdaten umwandeln + $record = $app->tform->getHTML($record, $this->active_tab, 'EDIT'); + $record['id'] = $this->id; - // Userdaten umwandeln - $record = $app->tform->getHTML($record, $this->active_tab,'EDIT'); - $record['id'] = $this->id; + $app->tpl->setVar($record); + } - $app->tpl->setVar($record); - } + function onShowEnd() { + global $app, $conf; - function onShowEnd() { - global $app, $conf; + // Template parsen + $app->tpl->pparse(); + } - // Template parsen - $app->tpl->pparse(); - } + function loadPlugins($next_tab) { + global $app; + 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']); + // Make the data of the form easily accessible for the plugin + $this->plugins[$plugin_name]->form = $this; + $this->plugins[$plugin_name]->onLoad(); + } + } + } } -?> \ No newline at end of file +?> -- Gitblit v1.9.1