kenken999/php
0
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?>