function get_report($id) { $sql = "select * from tblreport where 0=0 "; if($_SESSION[login][companyid]) $sql .= " and reportcompany = 1 "; if($_SESSION[login][vendorid]) $sql.= " and reportvendor = 1 "; if (clientcompanyclientid()) $sql.= " and reportclientcompanyclient = 1 "; if (is_admin()) $sql.= " and reportadmin = 1 "; if(is_numeric($id)) $sql.=" and reportid = $id"; else $sql.=" and reportshortname = '$id'"; $sql.=" order by reportname"; $arr=db_query($sql); return $arr[0]; } function get_memorized_report($reportid, $memorizedreportid) { $sql = "select * from tblreport join tblreportmemorized using(reportid) where 0=0 "; if($_SESSION[login][companyid]) $sql.= " and companyid = {$_SESSION[login][companyid]} "; if($_SESSION[login][vendorid]) $sql.= " and vendorid = {$_SESSION[login][vendorid]} "; if(is_numeric($reportid)) $sql.=" and reportid = $reportid"; if(clientcompanyclientid()) $sql.=" and reportclientcompanyclient = 1 and reportmemorizedcreatedby = ".loginid(); // ; reportclientcompanyclient = 1"; if(is_numeric($memorizedreportid)) $sql.=" and reportmemorizedid = $memorizedreportid"; else $sql.=" and reportshortname = '$reportid'"; $sql.="order by reportname"; $arr=db_query($sql); return $arr[0]; } function get_memorized_reports( ) { $sql = "select * from tblreport join tblreportmemorized using(reportid) where 0=0 "; $sql.= " and companyid= ".companyid(); $sql.= " and clientcompanyid= ".clientcompanyid(); $sql.= " and vendorid= {$_SESSION[login][vendorid]} "; if(clientcompanyclientid()) $sql.=" and reportclientcompanyclient = 1 and reportmemorizedcreatedby = ".loginid(); // ; reportclientcompanyclient = 1"; $sql.="order by reportname"; return db_query($sql); } function get_reports() { $sql = "select * from tblreport where 0=0 "; if(companyid()) $sql .= " and reportcompany = 1 "; if (clientcompanyclientid()) $sql .= " and reportclientcompanyclient=1 "; else if(clientcompanyid()) { $sql.= " and (reportclientcompany=1 "; if(is_developer()) $sql.= " or reportclientcompany=-1 "; $sql.=")"; } if (is_admin() && !is_admin_pseudo()) $sql .= " and reportadmin = 1 "; if($_SESSION[login][vendorid]) $sql.= " and reportvendor=1 "; $sql.=" order by reportname"; $arr=db_query($sql); d_dev('get_reports', array('sql' => $sql, 'arr' => $arr)); return $arr; } function get_report_sql($report) { global $selected_columns, $available_columns, $option_group, $default_columns, $group_selected, $default_orderby_columns, $columnconfig, $selected_clientcompanyid; if(!$report) ddie("No Report Name Specified"); $addpath=''; if($selected_clientcompanyid) $addpath="../"; if(!file_exists($addpath."reports/$report.inc.php")) ddie("No report definition file exists in ".$addpath."reports/$report.inc.php","You must define this report file in order to proceed"); include($addpath."reports/$report.inc.php"); include($addpath."reports/columns.inc.php"); //contains array of all column names if(!$available_columns) ddie("available_columns must be defined by reports/$report.inc.php", "can not continue until developer creates this variable"); foreach($available_columns as $k =>$v) { if(!$columnnames[$k]) ddie("Column Name: '$k', is not defined within reports/columns.inc.php","You must define '$k' as a column before continuing"); else $available_columns[$k]=$columnnames[$k]; } if(!is_array($default_columns)) ddie("default_columns variable must be defined by reports/$report.inc.php", "can not continue until developer creates this variable"); if($_POST[group_selected]) $group_selected = $_POST[group_selected]; if($_POST[selected_columns]) { $s=explode(",",$_POST[selected_columns]); foreach($s as $k=>$col) if($available_columns[$col]) $selected_columns[$col]=1; } else { $selected_columns=$default_columns; if($_POST) $_POST[selected_columns]=implode(",",array_keys($default_columns)); } $fnname="get_report_sql_{$report}"; if(!$sql) ddie("function: Variable 'sql' does not exists and must be defined by reports/$report.inc.php", "can not continue until developer creates this function"); $sql = get_selected_columns_sql($selected_columns, $sql); return $sql; } function get_selected_columns_grouped_sql($selected_columns, $start_sql,$group_selected) { // no grouping options , this is basically defunct and is never called global $summablecolumns; $start_sql = get_selected_columns_sql($selected_columns,$start_sql,0); $sql = "select sum(cnt) as cnt"; foreach($selected_columns as $col=>$v) { $sql.=","; if($summablecolumns[$col]) $sql.="sum($col) as $col "; else $sql.="$col "; } $sql.=" from (\n $start_sql\n)tbl where 0=0 "; if(is_array($_POST[report_filter])) { foreach ($_POST[report_filter] as $filter=>$fv) { if(!$summablecolumns[$filter] && !$filter_summable) //if this is a summable column and $filter_summable = false then dont put the criteria here, we'll add it after the column has been summed continue; $fv=trim($fv); $op=""; $tempop = substr($fv,0,1); if($tempop=="!") $op="!="; if($tempop==">") $op=">"; if($tempop=="<") $op="<"; if($op) $fv=substr($fv,-(strlen($fv)-1)); else $op="="; if(is_numeric($fv)) $sql .= " --asfdsdaf \nand $filter $op $fv \n"; } } $sql.=" group by "; foreach($selected_columns as $col=>$v) { if($groupby_count++) $sql.=","; if(!$summablecolumns[$col]) $sql.="$col "; } if($_POST[display_row_count] && is_numeric($_POST[display_row_count])) $sql.= " limit $_POST[display_row_count] "; return $sql; } function get_selected_columns_sql($selected_columns,$start_sql,$filter_summable=1) { global $summablecolumns,$default_orderby_columns,$columnconfig,$always_selected, $sql_select_inc; $sql = "select * from ( select 1 as cnt"; if($always_selected) //forceselection of these columsn foreach($always_selected as $col=>$v) if(!$selected_columns[$col]) $selected_columns[$col] = $v; foreach($selected_columns as $col=>$v) { $col = report_column_name($col); if ($col =="propertyextensionutility_landscape") continue; $sql.=","; if($col == "vendorrating") $sql .= "vendor_rating_average(tbl.vendorid) as vendorrating\n"; else $sql .= "$col\n"; } if ($sql_select_inc) { $sql .= ", $sql_select_inc "; } $sql .= "from (\n $start_sql\n) tbl where 0=0 "; $sql .= get_sqlfilterstring($_POST[selected_columns], $_POST[report_filter]); if($_POST[display_row_count] && is_numeric($_POST[display_row_count])) $sql.= " limit $_POST[display_row_count] "; $sql .= ") tbl "; return $sql; } function report_column_name($col) { $col = preg_replace("/[ .\\/\\\\#@%&*]/", "_", strtolower($col)); //string length of 63 or greater gets truncated in postgres //this has led to some ambigious names and sql errors $maxlen = 60; if (strlen($col) >= $maxlen) { global $keyedcolumnnames; if (!$keyedcolumnnames[$col]) { $keycol = substr($col, 0, $maxlen-6)."_".rand(10000, 99999); $keyedcolumnnames[$col] = $keycol; } $col = $keyedcolumnnames[$col]; } return $col; } function report_display_column($col,$val) { global $columnconfig; $config = $columnconfig[$col]; if($config[striptags]) $val = strip_tags($val); $nm=get_columnname($col); if($config["function_format"]) { $fn = $config["function_format"]; return $fn($val); } elseif( (!strstr($col,'update') && !strstr($nm,'update') &&(stristr($col,date)||stristr($nm,date))) || ((strstr(str_replace('update','',$col),'date'))) || ((strstr(str_replace('update','',$nm),'date')))) { if($config[dt_format]) return dt_format($val); else return dttime_format($val); } if($val&&is_numeric($val)&&substr($col,-4)=="_doc") return customfield_display_documentupload($val); return $val; } function get_columnname($col) { global $columnnames; if($columnnames[$col]) return $columnnames[$col]; ddie("You requested columnname '$col', this is not setup in \$columnnames array", "Developer must correct this before continueing"); } function report_display_contact($contactid) { $c = db_first("select * from tblcontact where contactid = ".db_number($contactid)); return $c[contactcname]; } function get_activeassignmentcount($clientcompanypropertyid) { $sql = "select count(*) as count from tblclientcompanypropertyassignment join tbllogin using(staffid) where clientcompanypropertyid = '".$clientcompanypropertyid."' and clientcompanypropertyassignmentaccepteddate is not null and (clientcompanypropertyassignmentrevokeddate > now() or clientcompanypropertyassignmentrevokeddate is null)"; $active_assignments = db_query($sql); return $active_assignments[0]['count']; } function get_clientcompanypropertynotes($clientcompanypropertyid) { $sql = "select notesubject, notetext, notecreatedby, notecreateddate from tblnote where clientcompanypropertyid = ".db_number($clientcompanypropertyid); $results = db_query($sql); $rval = ""; $count = 0; if ($results) { $rval .= "
| ".dttime_format($text['notecreateddate'])." | "; $rval .= "".get_login_info($text['notecreatedby'])." | "; $rval .= "".trim(strip_tags($text[notesubject]))." | "; $rval .= "".trim(strip_tags($text[notetext]))." | "; $rval .= "