From aa370627b211a51dc46891cfa4b6e3d2ef3e52db Mon Sep 17 00:00:00 2001 From: mcramer <m.cramer@pixcept.de> Date: Tue, 16 Jul 2013 10:45:17 -0400 Subject: [PATCH] - Fixed FS#2924 - the month will not set automatically in the autoresponder by click now Along with this fixed some display problems with the combo boxes introduced in 3.0.5. Some fields were not correctly displayed with the predefined values if value and text of the underlying option element differ. --- interface/lib/classes/tform_actions.inc.php | 426 +++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 331 insertions(+), 95 deletions(-) diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php index e6004cb..d60ecbf 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,19 +28,13 @@ 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; @@ -53,22 +47,21 @@ // 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"]); + + // Importing ID + $this->id = (isset($_REQUEST["id"]))?$app->functions->intval($_REQUEST["id"]):0; + + // show print version of the form + if(isset($_GET["print_form"]) && $_GET["print_form"] == 1) { + die('Function disabled.'); + $this->onPrintForm(); + } + + // send this form by email + if(isset($_GET["send_form_by_mail"]) && $_GET["send_form_by_mail"] == 1) { + die('Function disabled.'); + $this->onMailSendForm(); + } if(count($_POST) > 1) { $this->dataRecord = $_POST; @@ -87,9 +80,11 @@ // Calling the action functions if($this->id > 0) { - $this->onUpdate(); + $app->tform->action == 'EDIT'; + $this->onUpdate(); } else { - $this->onInsert(); + $app->tform->action == 'NEW'; + $this->onInsert(); } } @@ -99,41 +94,83 @@ function onUpdate() { global $app, $conf; - + + $this->onBeforeUpdate(); + $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); - } + + if($app->tform->formDef['db_history'] == 'yes') { + $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->onInsert(); + $plugin->onUpdate(); } - - $this->onAfterUpdate(); + + $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"]; - 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 { + $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 @@ -141,47 +178,89 @@ function onInsert() { global $app, $conf; + + $this->onBeforeInsert(); $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(); - + + $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"]) { - $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"]; + // 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); - } else { - header("Location: ".$app->tform->formDef['list_default']); + 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(); + $this->onShow(); } } else { - $this->onError(); + $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 onAfterUpdate() { - global $app, $conf; - } + function onBeforeUpdate() { + global $app, $conf; + } - function onAfterInsert() { - global $app, $conf; - } + function onBeforeInsert() { + global $app, $conf; + } + + function onAfterUpdate() { + global $app, $conf; + } + + function onAfterInsert() { + global $app, $conf; + } /** @@ -191,7 +270,7 @@ function onError() { global $app, $conf; - $app->tpl->setVar("error","<b>".$app->lng('Error').":</b><br>".$app->tform->errorMessage); + $app->tpl->setVar("error","<li>".$app->tform->errorMessage."</li>"); $app->tpl->setVar($this->dataRecord); $this->onShow(); } @@ -212,45 +291,46 @@ $app->tform->loadFormDef($tform_def_file); // importing ID - $this->id = intval($_REQUEST["id"]); + $this->id = $app->functions->intval($_REQUEST["id"]); if($this->id > 0) { // checking permissions - if($app->tform->formDef['auth'] == 'yes') { + 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')); } - $record_old = $app->db->queryOneRecord("SELECT * FROM ".$liste["table"]." WHERE ".$liste["table_idx"]." = ".$this->id); + //$this->dataRecord = $app->db->queryOneRecord("SELECT * FROM ".$liste["table"]." WHERE ".$liste["table_idx"]." = ".$this->id); + $this->dataRecord = $app->tform->getDataRecord($this->id); + + $this->onBeforeDelete(); // 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); + 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 ".$liste["table"]." WHERE ".$liste["table_idx"]." = ".$this->id); - + $app->db->query("DELETE FROM ".$app->tform->formDef['db_table']." WHERE ".$app->tform->formDef['db_table_idx']." = ".$this->id." LIMIT 1"); + + + // loading plugins + $next_tab = $app->tform->getCurrentTab(); + $this->loadPlugins($next_tab); + + // Call plugin foreach($this->plugins as $plugin) { - $plugin->onInsert(); + $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"]) { + //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(); @@ -261,6 +341,121 @@ exit; } + + function onBeforeDelete() { + global $app, $conf; + } + + function onAfterDelete() { + global $app, $conf; + } + + /** + * Function to print the form content + */ + + function onPrintForm() { + global $app, $conf; + + if($app->tform->formDef['template_print'] == '') die('No print template available.'); + + $app->tpl->newTemplate("print.tpl.htm"); + $app->tpl->setInclude("content_tpl",$app->tform->formDef['template_print']); + + 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('r'); + } + if(!$record = $app->db->queryOneRecord($sql)) $app->error($app->lng('error_no_view_permission')); + + $record["datum"] = date("d.m.Y"); + + $app->tpl->setVar($app->tform->wordbook); + + $app->tpl->setVar($record); + $app->tpl_defaults(); + $app->tpl->pparse(); + exit; + + } + + /** + * Function to print the form content + */ + + function onMailSendForm() { + global $app, $conf; + + if($app->tform->formDef['template_mailsend'] == '') die('No print template available.'); + + 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 ".$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('r'); + } + if(!$record = $app->db->queryOneRecord($sql)) $app->error($app->lng('error_no_view_permission')); + + $record["datum"] = date("d.m.Y"); + $record["mailmessage"] = $_POST["message"]; + + $app->tpl->setVar($app->tform->wordbook); + + $app->tpl->setVar($record); + $app->tpl_defaults(); + + $email_message = $app->tpl->grab(); + $email = $_POST["email"]; + $sender = $_POST["sender"]; + + $headers = "MIME-Version: 1.0\n"; + $headers .= "Content-type: text/html; charset=iso-8859-1\n"; + $headers .= "From: $sender\n"; + + 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'; + } + + 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; + } + + + + 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('r'); + } + if(!$record = $app->db->queryOneRecord($sql)) $app->error($app->lng('error_no_view_permission')); + + $record["datum"] = date("d.m.Y"); + + $app->tpl->setVar($app->tform->wordbook); + + $app->tpl->setVar($record); + $app->tpl_defaults(); + $app->tpl->pparse(); + exit; + + } /** * Function called on page show @@ -283,6 +478,30 @@ // Setting default values $app->tpl_defaults(); + + // 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(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']); + } + + // loading plugins + $this->loadPlugins($this->active_tab); // Calling the Plugin onShow Events and set the data in the // plugins placeholder in the template @@ -321,19 +540,20 @@ // 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; + if($app->tform->formDef['auth'] == 'yes' && $_SESSION["s"]["user"]["typ"] != 'admin') { + $sql = "SELECT * FROM ".$app->tform->formDef['db_table']." WHERE ".$app->tform->formDef['db_table_idx']." = ".$this->id." AND ".$app->tform->getAuthSQL('r'); } else { - $sql = "SELECT * FROM ".$app->tform->formDef['db_table']." WHERE ".$app->tform->formDef['db_table_idx']." = ".$this->id." AND ".$app->tform->getAuthSQL('u'); + $sql = "SELECT * FROM ".$app->tform->formDef['db_table']." WHERE ".$app->tform->formDef['db_table_idx']." = ".$this->id; } if(!$record = $app->db->queryOneRecord($sql)) $app->error($app->lng('error_no_view_permission')); } else { - $record = $app->tform->encode($_POST,$this->active_tab); + // $record = $app->tform->encode($_POST,$this->active_tab); + $record = $app->tform->encode($this->dataRecord,$this->active_tab,false); } $this->dataRecord = $record; - // Userdaten umwandeln + // Userdaten umwandeln $record = $app->tform->getHTML($record, $this->active_tab,'EDIT'); $record['id'] = $this->id; @@ -346,6 +566,22 @@ // 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 plugib + $this->plugins[$plugin_name]->form = $this; + $this->plugins[$plugin_name]->onLoad(); + } + } + } } -- Gitblit v1.9.1