CoolFace
Apppublic

kenken999/php

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
webchart1.php601 linesDownload Raw Back to public
1<?php2ini_set("display_errors","1");3ini_set("display_startup_errors","1");4include("include/dbcommon.php");5header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");6 7 8include("include/reportfunctions.php");9 10	if( !Security::getUserName() )11	{12		$_SESSION["MyURL"] = GetTableLink("webreport");13		header("Location: ".GetTableLink("login", "", "message=expired"));14		return;15	}16 17Reload_Chart(postvalue("cname"));18$arr_tables = DBGetTablesListByGroup("db");19 20 21include('include/xtempl.php');22$xt = new Xtempl();23 24if (@$_SESSION['webcharts']['settings']['title'] != "") {25	$title=@$_SESSION['webcharts']['settings']['title'];26	if(strlen($title)>25)27		$title=substr($title,25)."...";28	$xt->assign("chart_title",", "."Title".": ".$title);29} else {30	$xt->assign("chart_title","");31}32if (@$_SESSION['webcharts']['tables'][0] != "") {33	$stable=@$_SESSION['webcharts']['tables'][0];34	if(strlen($stable)>25)35		$stable=substr($stable,25)."...";36 37	$xt->assign("chart_table",", "."Table".": ".$stable);38} else {39	$xt->assign("chart_table","");40}41$xt->assign("b_is_chart_save",($_SESSION['webcharts']['tmp_active'] != "x"));	42$xt->assign("b_is_chart_name",($_SESSION['webcharts']['settings']['name'] != ""));43$xt->assign("chart_name",$_SESSION['webcharts']['settings']['name']);44$xt->assign("wr_pagestylepath", $wr_pagestylepath);45$h_includes = "";46$b_includes = "";47 48$h_includes .= '49	<link rel="stylesheet" href="'.GetRootPathForResources("include/css/jquery-ui.css").'" type="text/css">50	<link rel="stylesheet" href="'.GetRootPathForResources("include/css/dstyle.css").'" type="text/css">51	<link rel="stylesheet" href="'.GetRootPathForResources("include/fancybox/jquery.fancybox.css").'" type="text/css" media="screen">52	53	<script type="text/javascript" src="'.GetRootPathForResources("include/js/jquery.min.js").'"></script>54	<script type="text/javascript" src="'.GetRootPathForResources("include/js/jquery.dimensions.pack.js").'"></script>55	<script type="text/javascript" src="'.GetRootPathForResources("include/js/jquery.easing.js").'"></script>56    <script type="text/javascript" src="'.GetRootPathForResources("include/js/jquery.fancybox.pack.js").'"></script>57    <script type="text/javascript" src="'.GetRootPathForResources("include/js/jquery-ui.js").'"></script>58	<script type="text/javascript" src="'.GetRootPathForResources("include/js/json.js").'"></script>59'."\r\n";60 61$xt->assign("h_includes", $h_includes);62 63$table_selected = @$_SESSION['webcharts']['tables'][0];64$xt->assign("table_selected", runner_htmlspecialchars($table_selected));65 66$fields_table_selected = "*";67/*68$arr_fields = WRGetFieldsList($table_selected);69foreach ($arr_fields as $fld_name) {70	$fields_table_selected .= $fld_name.", ";71}72$fields_table_selected = substr($fields_table_selected,0,strlen($fields_table_selected)-2);73*/74$xt->assign("fields_table_selected", $fields_table_selected);75 76$arr_rel = $_SESSION['webcharts']['table_relations'];77if ( !empty( $arr_rel ) )78	$arr_relations = array_slice(explode("@END@", $arr_rel["relations"]), 0, -1);79 80 81$strLeftWrapper = "`"; // #987582$strRightWrapper = "`"; // #987583 84$tables = "";85$b_includes .= "86<script type='text/javascript'>87var left_wrapper = '".$strLeftWrapper."';88var right_wrapper = '".$strRightWrapper."';89var arr_tables_fields = new Array();"."\n";90for ($i=0; $i < pre8count($arr_tables); $i++ ) {91	$t = $arr_tables[$i];92	if($t!=$table_selected)93	{94		$flag=0;95		if (!empty($arr_rel))96		{97			foreach ($arr_relations as $rel) 98			{99				$arr_parts = explode("@SEP@", $rel);100				if($arr_parts[1]==$t)101					$flag=1;102			}103		}104		if($flag==0)105			$tables .= '<option value="'.runner_htmlspecialchars($t).'">'.$t.'</option>';106	107	}108	$arr_fields = array();109	$arr_fields = WRGetNBFieldsList($t);110	$b_includes .= "arr_tables_fields['".jsreplace($t)."'] = new Array();"."\n";111	for ($j=0; $j < pre8count($arr_fields); $j++) {112		$b_includes .= "arr_tables_fields['".jsreplace($t)."'][".$j."] = '".jsreplace($arr_fields[$j])."';"."\n";113	}114}115$b_includes .= '</script>';116$xt->assign("tables", $tables);117 118$b_includes .= '119<script type="text/javascript">120var timeout	= 200,121	closetimer	= 0,122	relation_stack = [],123	table_stack = [],124	rel = [];125 126$(document).ready(function(){127	128	$("a#sql_query").fancybox({129		fitToView: false,130				autoSize: false,131				width : 800,132				height : 550,133				overlayShow: true134	});135		$("a#preview").fancybox({136			fitToView: false,137				autoSize: false,138				width : 820,139				height : 660,140				overlayShow: true141		});142	';143	$b_includes .= alertDialog();144	$b_includes .= '145	146	function collect_input_data() {147		var s = "", t = "", r=[];148		149		for (i in relation_stack) {150			if (relation_stack[i] != undefined) {151				s += i + "@SEP@" + relation_stack[i] + "@END@";152			}153		}154		for (i in table_stack) {155			if (table_stack[i] != undefined) {156				t += i + ",";157			}158		}		159		160		$("#rel_list").children().each(function(){161			r[r.length]=this.rel;162		});163		164		var output = {165			table_relations : {166				left_table  : $("#left_tables").val(),167				right_table : $("#right_tables").val(),168				left_field  : $("#left_fields_1").val(),169				right_field : $("#right_fields_1").val(),170				join_type   : $("#join_select").val(),171				relations   : s,172				join_tables : t,173				relat: r174			}175		};176		177		return JSON.stringify(output);178	}	179	180	$("#sqlbtn").click(function(){181		182		var output = collect_input_data();183		id=$(this).attr("id");184		$.ajax({185			type: "POST",186			url: "'.GetTableLink("save-state").'",187			data: {188				name: "table_relations",189				web: "webcharts",190				str_xml: output,191				rnd: (new Date().getTime())192			},193			success: function(msg){194				if ( msg == "OK" ) {195					$("#sql_query").click();196				} else {197					$("#alert").html("<p>"+msg+"</p>").dialog("open");198				}199			}200		});201	});202		203	$("#addrel_btn").click(function(){204		var rel_txt,205			tbl_left = $("#left_tables").val(),206			tbl_right = $("#right_tables").val(),207			rightFieldSelector = "select[id^=right_fields_]",208			leftFieldSelector = "select[id^=left_fields_]";209		210		if ( tbl_left == -1 ) {211			$("#alert").html("<p>'."Select left table".'</p>").dialog("open");212			return;213		}214		if ( tbl_right == -1 ) {215			$("#alert").html("<p>'."Select right table".'</p>").dialog("open");216			return;217		}218		// add check if field is selected219		220		rel_txt = $("#join_select").val() + left_wrapper + tbl_right + right_wrapper + " ON ";221		$(".reportchart-editfields").each(function(){222			if ($(leftFieldSelector, this).val() != null && $(leftFieldSelector, this).val() != "-1"223				&& $(rightFieldSelector,this).val() != null && $(rightFieldSelector,this).val() != "-1")224			{225				rel_txt += left_wrapper + tbl_left + right_wrapper + ".";226				rel_txt += left_wrapper + $(leftFieldSelector,this).val() + right_wrapper + " = ";227				rel_txt += left_wrapper + tbl_right + right_wrapper + ".";228				rel_txt += left_wrapper + $(rightFieldSelector,this).val() + right_wrapper;229				rel_txt += " AND "230			}231		});232		rel_txt = rel_txt.substr(0,rel_txt.length-5);233	234		if (relation_stack[rel_txt] != undefined) {235			$("#alert").html("<p>'."The relation with selected parameters already exists".'</p>").dialog("open");236			return;237		}		238		239		rel={"left_table":tbl_left,240				 "right_table":tbl_right,241				 "left_fields":[],242				 "right_fields":[],243				 "rel_type":$("#join_select").val()};244		245		$(".reportchart-editfields").each(function(){246			if ($(leftFieldSelector,this).val() != null && $(leftFieldSelector,this).val() != "-1"247					&& $(rightFieldSelector,this).val() != null && $(rightFieldSelector,this).val() != "-1")248			{249				rel.left_fields[rel.left_fields.length] = $(leftFieldSelector,this).val();250				rel.right_fields[rel.right_fields.length] = $(rightFieldSelector,this).val();251			}252		});253		254		relation_stack[rel_txt] = tbl_right;255		256 257		option = new Option(rel_txt,tbl_right);258		option.rel=rel;259		var objSel=document.getElementById("rel_list");260		objSel.options[objSel.length]=option;261 262 263		if (table_stack[tbl_right] == undefined) {264			table_stack[tbl_right] = 1;265			$("#left_tables").append("<option value=\""+tbl_right+"\">"+tbl_right+"</option>");			266			$("#right_tables option:selected").remove();267			$(rightFieldSelector).empty();268			//$(leftFieldSelector).empty();269			var counter = 0;270			$(leftFieldSelector).each(function(){271				if(counter++)272					$(this).parentsUntil("table", "tr").remove();273			});274		} else {275			table_stack[tbl_right] = table_stack[tbl_right] + 1;276		}277	});278	279	$("#remrel_btn").click(function(){280		var rel, val, db, 281		tbl_left = $("#left_tables").val(),282		tbl_right = $("#right_tables").val();283		if ($("#rel_list").children(":selected").length > 0) {284			rel = $("#rel_list").children(":selected");285			val = $(rel).text();286			db = $(rel).val();287			if(db!="")288			{289				$("#right_tables").append("<option value=\""+db+"\">"+db+"</option>");			290				$("#left_tables").find("option:contains("+db+")").remove();291 292			}293			if (table_stack[relation_stack[val]] == 1) {294				table_stack[relation_stack[val]] = undefined;295			} else {296				table_stack[relation_stack[val]] = table_stack[relation_stack[val]] - 1;297			}298			relation_stack[val] = undefined;299			$(rel).remove();300		} else {301			$("#alert").html("<p>'."Select relation you want to remove".'</p>").dialog("open");302			return;303		}304	});305	306	$(".table_fields").change(function(){307		var s = "",308			t = $(this).val(),309			id = this.id.replace("_tables","");310			311		if (t == "-1") {312			$("#"+id+"_fields_1").html("");313			return;314		}315		var theSel=document.getElementById(id+"_fields_1");316		$("#"+id+"_fields_1").empty();317		for (var i=0; i < arr_tables_fields[t].length; i++) {318			theSel.options[theSel.length] = new Option(arr_tables_fields[t][i], arr_tables_fields[t][i]);319		}320		if(id=="right")321		{322			th=$("#"+id+"_fields_1")[0];323			live_change(th);324		}325		$("#"+id+"_fields_1").get(0).disabled = false;326	});327	328	$(".fld_names").change(function(){329		live_change(this);330	});	331	332	$("#row1")333		.css("cursor", "default")334		.css("font-weight", "bold");335 336	$("td[id^=row]").mouseover(function(){337		for(var i=0; i<=9; i++) {338			if(i == this.id.replace("row", "")) {339				$("td[id=row" + i + "]").css("background-color","#92BEEB");340			}341			else {342				$("td[id=row" + i + "]").css("background-color","#F4F7FB");343			}344		}345	});346 347'."\r\n";348 349$b_includes .= JumpTo();350 351if (pre8count(GetUserGroups()) < 2 || isset( $_SESSION['webcharts']['settings']['status'] )352	&& $_SESSION['webcharts']['settings']['status'] == "private" ) {353	$b_includes .= '$("td[id=row7]").hide();'."\r\n";354}355if (is_wr_project() || is_wr_custom()) {356	$b_includes .= '$("td[id=row1], td[id=row2]").hide();'."\r\n";357}358if($wr_is_standalone)359	$b_includes .= '$("td[id=row9]").hide();'."\n";360 361if ($_SESSION['webcharts']['settings']['title'] == "") {362	$b_includes .= '363		for (var i=2; i<=7; i++){364			$("td[id=row" + i + "]").hide();365		};366	'."\r\n";367}368 369$rLinks = "var rlinks = {};\r\n";370for($ri = 0; $ri < 10; $ri++)371	$rLinks.= "rlinks['".$ri."'] = '".GetTableLink("webchart".$ri)."';\r\n";372	373$b_includes .= '374	var activeXDetectRules = [375            {"name":"ShockwaveFlash.ShockwaveFlash.7"},376            {"name":"ShockwaveFlash.ShockwaveFlash.6"},377            {"name":"ShockwaveFlash.ShockwaveFlash"}378    ];379	var getActiveXObject = function(name){380        var obj = -1;381        try{382            obj = new ActiveXObject(name);383        }catch(err){384            obj = {activeXError:true};385        }386        return obj;387    };388	if(navigator.plugins && navigator.plugins.length>0)389	{390		var type = "application/x-shockwave-flash";391		var mimeTypes = navigator.mimeTypes;392		if(!mimeTypes || !mimeTypes[type] || !mimeTypes[type].enabledPlugin || !mimeTypes[type].enabledPlugin.description)393		{394			$("#previewbtn").parent("span").hide();395			$("#previewbtn").hide();396		}397	}398	else if(navigator.appVersion.indexOf("Mac")==-1 && window.execScript)399	{400		var isFlash = false;401		for(var i=0; i<activeXDetectRules.length; i++){402                var obj = getActiveXObject(activeXDetectRules[i].name);403                if(!obj.activeXError){404					isFlash = true;405				}406			}407		if(!isFlash){408			$("#previewbtn").parent("span").hide();409			$("#previewbtn").hide();410		}411	}	412	$("#nextbtn, #backbtn, td[id^=row], #savebtn, #saveasbtn, #previewbtn").click(function(){413		var URL = "'.GetTableLink("webreport").'";414		'.$rLinks.'415		if( this.id == "nextbtn" )416			URL = "'.GetTableLink("webchart2").'";417		if( this.id == "backbtn" )418			URL = "'.GetTableLink("webchart0").'";419		if( this.id == "saveasbtn" )420			URL = "'.GetTableLink("webchart6", "", "saveas=1").'";421		if( this.id.substr(0,3)=="row" && this.id != "row1" )422			URL = rlinks[this.id.replace(\'row\',\'\')];423		if( this.id == "row8" )424			URL = "'.GetTableLink("webreport").'";425		if( this.id == "row9" )426			URL = "'.GetTableLink("menu").'";427	428		var output = collect_input_data();429		var_save=0;430		if( this.id == "savebtn")431			var_save=1;432		if( this.id == "savebtn" || this.id == "previewbtn") {433			id=this.id;434			$.ajax({435				type: "POST",436				url: "'.GetTableLink("save-state").'",437				data: {438					save: var_save,439					web: "webcharts",440					name: "table_relations",441					str_xml: output,442					rnd: (new Date().getTime())443				},444				success: function(msg){445					if ( msg == "OK" ) {446						if( id == "savebtn")447						{448							$("#alert")449								.html("<p>'."Chart Saved".'</p>")450								.dialog("option", "close", function(){451									window.location = "'.GetTableLink("webreport").'";452								})453								.dialog("open");454						}455						else456							$("#preview").click();457					} else {458						$("#alert").html("<p>'."Some problems appear during saving".'</p>").dialog("open");459					}460				},461				error: function() {462					$("#alert").html("<p>'."Some problems appear during saving".'</p>").dialog("open");463				}464			});465		}466		thisid=this.id;467		if(this.id != "row1" && this.id !="savebtn" && this.id !="previewbtn") {468			$.ajax({469				type: "POST",470				url: "'.GetTableLink("save-state").'",471				data: {472					name: "table_relations",473					web: "webcharts",474					str_xml: output,475					rnd: (new Date().getTime())476				},477				success: function(msg){478					if ( msg == "OK" ) {479						window.location = URL;480					} else {481						$("#alert").html("<p>"+msg+"</p>").dialog("open");482						if( thisid == "row8" || thisid == "row9" )483							window.location=URL;484					}485				}486			});487		}488	});489});490</script>'."\r\n";491 492$arr = $_SESSION['webcharts']['table_relations'];493	494$b_includes .= '<script type="text/javascript">495	$(document).ready(function(){'."\r\n";496if ( !empty( $arr ) )497{498	$arr_relations = array_slice(explode("@END@", $arr["relations"]), 0, -1);499	$b_includes .="$('#left_tables').val('".jsreplace($arr["left_table"])."');500			if ($('#left_tables').val() != '-1') 501			{502				$('#left_tables').change();				503			}504			$('#right_tables').val('".jsreplace($arr["right_table"])."');505			if ($('#right_tables').val() != '-1') 506			{507				$('#right_tables').change();				508			}			509			$('#left_fields_1').val('".jsreplace($arr["left_field"])."');510			$('#right_fields_1').val('".jsreplace($arr["right_field"])."');511			$('#right_fields_1').change();512			$('#join_select').val('".jsreplace($arr["join_type"])."');"."\r\n";513			$c=0;514			if(!is_array($arr["relat"]) || !pre8count($arr["relat"]))515				$arr_relations=array();516	foreach ($arr_relations as $rel) 517	{518		$arr_parts = explode("@SEP@", $rel);519		$b_includes .= "520		relation_stack['".jsreplace($arr_parts[0])."'] = '".jsreplace($arr_parts[1])."';";521			522		foreach($arr["relat"] as $key=>$value)523		{524			if($key==$c)525			{526				$b_includes .= "var rel={'left_table':'".jsreplace($value["left_table"])."',527										'right_table':'".jsreplace($value["right_table"])."',528										'left_fields':[],529										'right_fields':[],530										'rel_type':'".$value["rel_type"]."'};"."\r\n";531				foreach($value["left_fields"] as $k=>$val)532					$b_includes .= "rel.left_fields[".$k."]='".$val."';";533				foreach($value["right_fields"] as $k=>$val)534					$b_includes .= "rel.right_fields[".$k."]='".$val."';";535			}	536		}537		$b_includes .= "option = new Option('".jsreplace($arr_parts[0])."','".jsreplace($arr_parts[1])."');538		option.rel=rel;539		var objSel=document.getElementById('rel_list');540		objSel.options[objSel.length]=option;541		if (table_stack['".jsreplace($arr_parts[1])."'] == undefined) 542		{543			table_stack['".jsreplace($arr_parts[1])."'] = 1;544			$('#left_tables').append(\"<option value='".jsreplace($arr_parts[1])."'>".$arr_parts[1]."</option>\");545		} 546		else 547		{548			table_stack['".jsreplace($arr_parts[1])."'] = table_stack['".jsreplace($arr_parts[1])."'] + 1;549		}		550		"."\r\n";	551		$c++;552	}553}554else555{556	$b_includes .='$("#left_tables").val($("#left_tables")[0].options[1].value);557		$("#left_tables").change();';558}559$b_includes .= '});560function live_change(th)561{562		var id = th.id.substr(th.id.length-1),563			tr  = $(th).parent().parent(),564			new_id = 0,565			new_tr = "";566 567		if ( $("td > select",tr).eq(0).val() != null && $("td > select",tr).eq(0).val() != "-1"568			&& $("td > select",tr).eq(1).val() != null && $("td > select",tr).eq(1).val() != "-1") {569			new_id = parseInt(id)+1;570			if ($("#left_fields_"+new_id).length > 0) {571				return;572			}573			new_tr += "<tr class=\"reportchart-editfields\">";574			new_tr += "<td></td>";575			new_tr += "<td><select class=\"fld_names\" id=\"left_fields_"+new_id+"\" name=\"left_fields_"+new_id+"\" style=\"width:150px\" onchange=\"live_change(this);\">";576			if (new_id == 2) {577				new_tr += "<option value=\"-1\"></option>";578			}579			new_tr += $("td > select",tr).eq(0).html();580			new_tr += "</select></td>";581			new_tr += "<td></td>";582			new_tr += "<td><select class=\"fld_names\" id=\"right_fields_"+new_id+"\" name=\"right_fields_"+new_id+"\" style=\"width:150px\" onchange=\"live_change(this);\">";583			if (new_id == 2) {584				new_tr += "<option value=\"-1\"></option>";585			}586			new_tr += $("td > select",tr).eq(1).html();587			new_tr += "</select></td>";588			new_tr += "</tr>";589			$(new_tr).insertAfter(tr);590			$("#left_fields_"+new_id).get(0).selectedIndex=0;591			$("#right_fields_"+new_id).get(0).selectedIndex=0;592		}593}594</script>'."\r\n";595 596$xt->assign("chart_name_preview",$_SESSION['webcharts']['settings']['name']);597$xt->assign("b_includes", $b_includes);598 599$templatefile = GetTemplateName("", "webchart1");600$xt->display($templatefile);601?>