From 25ece9c51091bf98f06a4578deb2175e6dfb1112 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Thu, 22 Feb 2007 07:39:22 -0500
Subject: [PATCH] Updated several base libraries and added advanced search functionality.

---
 interface/lib/classes/tform_actions.inc.php |  174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 162 insertions(+), 12 deletions(-)

diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php
index 26a4912..0bcc13d 100644
--- a/interface/lib/classes/tform_actions.inc.php
+++ b/interface/lib/classes/tform_actions.inc.php
@@ -56,6 +56,16 @@
 				
 				// Importing ID
                 $this->id = intval($_REQUEST["id"]);
+				
+				// show print version of the form
+				if($_GET["print_form"] == 1) {
+					$this->onPrintForm();
+				}
+				
+				// send this form by email
+				if($_GET["send_form_by_mail"] == 1) {
+					$this->onMailSendForm();
+				}
 
                 if(count($_POST) > 1) {
                         $this->dataRecord = $_POST;
@@ -108,14 +118,25 @@
                         $this->onAfterUpdate();
 
                         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"]) {
+                           $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 ($_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']);
+                            header("Location: ".$app->tform->formDef['list_default']);
                         }
                         exit;
                     } else {
@@ -150,15 +171,23 @@
                         }
 
                         $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"];
+                         // 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 {
+							exit;
+                        } elseif ($_SESSION["s"]["form"]["return_to_url"] != '') {
+							$_SESSION["s"]["form"]["return_to_url"] = '';
+							session_write_close();
+							header("Location: ".$_SESSION["s"]["form"]["return_to_url"]);
+							exit;
+						} else {
                                 header("Location: ".$app->tform->formDef['list_default']);
                         }
                         exit;
@@ -244,13 +273,13 @@
 						
                         // Call plugin
                         foreach($this->plugins as $plugin) {
-                                $plugin->onInsert();
+                                $plugin->onDelete();
                         }
                 }
 
-                //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 +290,113 @@
                 exit;
 
         }
+		
+		/**
+        * 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('u');
+            }
+            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('u');
+            	}
+            	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 (!ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+' . '@' . '([-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.)+' . '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $sender)) {
+    				$sender = 'noreply@iprguard.de';
+  				}
+				
+				if (ereg('^[-!#$%&\'*+\\./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>&nbsp;</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('u');
+            }
+            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
@@ -284,8 +420,20 @@
                 // Setting default values
                 $app->tpl_defaults();
 				
+				// Show the navigation bar of the form
+				if($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> &nbsp;';
+					}
+					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);
+				}
+				
+				
 				// loading plugins
-				//$next_tab = $app->tform->getNextTab();
                 $this->loadPlugins($this->active_tab);
 
                 // Calling the Plugin onShow Events and set the data in the
@@ -337,7 +485,7 @@
 
                 $this->dataRecord = $record;
 
-            // Userdaten umwandeln
+            	// Userdaten umwandeln
                 $record = $app->tform->getHTML($record, $this->active_tab,'EDIT');
                 $record['id'] = $this->id;
 
@@ -360,6 +508,8 @@
                       $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