/** * Function set_project_environment * * Analyses configuration and current session to identify which project area * is to be used. * If a project is specified in the HTTP parameters then that is used, otherwise * the current SESSION project is used. If none of these are specified then the default * "reports" project is used */ function set_project_environment() { global $g_project; global $g_menu; global $g_menu_title; $project = session_request_item("project", "reports"); $menu = false; $menu_title = "Set Menu Title"; // Now we now the project include the relevant config.php $projpath = "projects/" . $project; $configfile = $projpath . "/config.php"; $menufile = $projpath . "/menu.php"; if (!is_file($projpath)) { find_file_to_include($projpath, $projpath); } if (!$projpath) { find_file_to_include("config.php", $configfile); if ($configfile) { include_once $configfile; } $g_project = false; $g_menu = false; $g_menu_title = ""; $old_error_handler = set_error_handler("ErrorHandler"); handle_error("Project Directory {$project} not found. Check INCLUDE_PATH or project name"); return; } if (!is_file($configfile)) { find_file_to_include($configfile, $configfile); } if (!is_file($menufile)) { find_file_to_include($menufile, $menufile); } if ($configfile) { include_once $configfile; if (is_file($menufile)) { include_once $menufile; } else { handle_error("Menu Definition file menu.php not found in project {$project}", E_USER_WARNING); } } else { find_file_to_include("config.php", $configfile); if ($configfile) { include_once $configfile; } $g_project = false; $g_menu = false; $g_menu_title = ""; $old_error_handler = set_error_handler("ErrorHandler"); handle_error("Configuration Definition file config.php not found in project {$project}", E_USER_ERROR); } $g_project = $project; $g_menu = $menu; $g_menu_title = $menu_title; return $project; }
function begin_page() { reportico_report::begin_page(); $this->debug("HTML Begin Page\n"); // Page Headers reportico_report::page_headers(); $title = $this->query->derive_attribute("ReportTitle", "Unknown"); if ($this->query->output_template_parameters["show_hide_report_output_title"] != "hide") { $this->text .= '<H1 class="swRepTitle">' . sw_translate($title) . '</H1>'; } $forward = session_request_item('forward_url_get_parameters', ''); if ($forward) { $forward .= "&"; } if (!get_request_item("printable_html")) { if (!$this->query->access_mode || $this->query->access_mode != "REPORTOUTPUT") { $this->text .= '<div class="swRepBackBox"><a class="swLinkMenu" href="' . $this->query->get_action_url() . '?' . $forward . 'execute_mode=PREPARE&reportico_session_name=' . reportico_session_name() . '" title="' . template_xlate("GO_BACK") . '"> </a></div>'; } if (get_reportico_session_param("show_refresh_button")) { $this->text .= '<div class="swRepRefreshBox"><a class="swLinkMenu" href="' . $this->query->get_action_url() . '?' . $forward . 'refreshReport=1&execute_mode=EXECUTE&reportico_session_name=' . reportico_session_name() . '" title="' . template_xlate("GO_REFRESH") . '"> </a></div>'; } } else { $this->text .= '<div class="swRepPrintBox"><a class="swLinkMenu" href="' . $this->query->get_action_url() . '?' . $forward . 'printReport=1&execute_mode=EXECUTE&reportico_session_name=' . reportico_session_name() . '" title="' . template_xlate("GO_PRINT") . '">' . ' ' . '</a></div>'; } }
function each_line($val) { reportico_report::each_line($val); if (session_request_item("target_style", "TABLE") == "FORM") { if (!$this->page_started) { $formpagethrow = $this->query->get_attribute("formBetweenRows"); switch ($formpagethrow) { case "newpage": if ($this->page_line_count > 0) { $formpagethrow = "swRepPageFormLine swNewPage"; } else { $formpagethrow = "swRepPageFormLine"; } break; case "blankline": $formpagethrow = "swRepPageFormBlank"; break; case "solidline": $formpagethrow = "swRepPageFormLine"; break; } // PPP $this->jar[""] .= '<TABLE class="'.$this->query->getBootstrapStyle("page").'swRepPage '.$formpagethrow.'" '.$this->get_style_tags($this->query->output_page_styles).'>'; $this->page_started = true; } foreach ($this->query->groups as $val) { for ($i = 0; $i < count($val->headers); $i++) { $col =& $val->headers[$i]; $this->format_group_header($col); } } foreach ($this->query->display_order_set["column"] as $k => $w) { if ($w->attributes["column_display"] != "show") { continue; } $this->format_group_header($w); } $this->page_line_count++; $this->line_count++; //$this->jar[""] .= '</TABLE>'; $this->page_started = false; return; } if ($this->page_line_count == 1) { //$this->jar[""] .="<tr class='swPrpCritLine'>"; //foreach ( $this->columns as $col ) //$this->format_column_header($col); //$this->jar[""] .="</tr>"; } //foreach ( $this->columns as $col ) if ($this->body_display == "show" && get_reportico_session_param("target_show_detail")) { $this->begin_line(); if (!$this->page_started) { //$this->jar[""] .= '<TABLE class="'.$this->query->getBootstrapStyle("page").'swRepPage" '.$this->get_style_tags($this->query->output_page_styles).'>'; $this->page_started = true; } foreach ($this->query->display_order_set["column"] as $col) { $this->format_column($col); } $this->end_line(); } }
/** * Function set_project_environment * * Analyses configuration and current session to identify which project area * is to be used. * If a project is specified in the HTTP parameters then that is used, otherwise * the current SESSION * "reports" project is used */ function set_project_environment($initial_project = false, $project_folder = "projects", $admin_project_folder = "projects" ) { global $g_project; global $g_projpath; global $g_language; global $g_translations; global $g_menu; global $g_menu_title; global $g_dropdown_menu; global $g_report_desc; global $g_included_config; $target_menu = ""; $project = ""; $last_project = ""; if ( isset_reportico_session_param("project") ) if ( get_reportico_session_param("project") ) $last_project = get_reportico_session_param("project"); if ( !$project && array_key_exists("submit_delete_project", $_REQUEST) ) { $project = get_request_item("jump_to_delete_project", ""); $_REQUEST["xmlin"] = "deleteproject.xml"; set_reportico_session_param("project",$project); } if ( !$project && array_key_exists("submit_configure_project", $_REQUEST) ) { $project = get_request_item("jump_to_configure_project", ""); $_REQUEST["xmlin"] = "configureproject.xml"; set_reportico_session_param("project",$project); } if ( !$project && array_key_exists("submit_menu_project", $_REQUEST) ) { $project = get_request_item("jump_to_menu_project", ""); set_reportico_session_param("project",$project); } if ( !$project && array_key_exists("submit_design_project", $_REQUEST) ) { $project = get_request_item("jump_to_design_project", ""); set_reportico_session_param("project",$project); } if ( $initial_project ) { $project = $initial_project; set_reportico_session_param("project",$project); } if ( !$project ) $project = session_request_item("project", "admin"); if ( !$target_menu ) $target_menu = session_request_item("target_menu", ""); $menu = false; $menu_title = "Set Menu Title"; if ( $project == "admin" ) $project_folder = $admin_project_folder; // Now we now the project include the relevant config.php $projpath = $project_folder."/".$project; $configfile = $projpath."/config.php"; $configtemplatefile = $projpath."/adminconfig.template"; $menufile = $projpath."/menu.php"; if ( $target_menu != "" ) $menufile = $projpath."/menu_".$target_menu.".php"; if ( !is_file($projpath) ) { find_file_to_include($projpath, $projpath); } set_reportico_session_param("project_path", $projpath); $this->reports_path = $projpath; if ( !$projpath ) { find_file_to_include("config.php", $configfile); if ( $g_included_config && $g_included_config != $configfile ) handle_error("Cannot load two different instances on a single page from different projects.", E_USER_ERROR); else { $g_included_config = $configfile; include_once($configfile); } $g_projpath = false; $g_project = false; $g_menu = false; $g_menu_title = ""; $g_dropdown_menu = false; $old_error_handler = set_error_handler("ErrorHandler"); handle_error("Project Directory $project not found. Check INCLUDE_PATH or project name"); return; } $g_projpath = $projpath; if ( !is_file($configfile) ) find_file_to_include($configfile, $configfile); if ( !is_file($menufile) ) find_file_to_include($menufile, $menufile); if ( $project == "admin" && !is_file($configfile)) { find_file_to_include($configtemplatefile, $configfile); } if ( $configfile ) { if ( !is_file($configfile) ) { handle_error("Config file $menufile not found in project $project", E_USER_WARNING); } if ( $g_included_config && $g_included_config != $configfile ) handle_error("Cannot load two different instances on a single page from different projects.", E_USER_ERROR); else { include_once($configfile); $g_included_config = $configfile; } if ( is_file($menufile) ) include($menufile); else handle_error("Menu Definition file $menufile not found in project $project", E_USER_WARNING); } else { find_file_to_include("config.php", $configfile); if ( $configfile ) { if ( $g_included_config && $g_included_config != $configfile ) handle_error("Cannot load two different instances on a single page from different projects.", E_USER_ERROR); else { include_once($configfile); $g_included_config = $configfile; } } $g_project = false; $g_projpath = false; $g_menu = false; $g_menu_title = ""; $g_dropdown_menu = false; $old_error_handler = set_error_handler("ErrorHandler"); handle_error("Configuration Definition file config.php not found in project $project", E_USER_ERROR); } // Ensure a Database and Output Character Set Encoding is set if ( !defined("SW_DB_ENCODING" ) ) define("SW_DB_ENCODING", "UTF8"); if ( !defined("SW_OUTPUT_ENCODING" ) ) define("SW_OUTPUT_ENCODING", "UTF8"); // Ensure a language is set if ( !defined("SW_LANGUAGE" ) ) define("SW_LANGUAGE", "en_gb"); $g_project = $project; if ( !defined('SW_PROJECT') ) define('SW_PROJECT', $g_project); $language = "en_gb"; // Default language to first language in avaible_languages $langs = available_languages(); if ( count($langs) > 0 ) { $language = $langs[0]["value"]; } if ( defined('SW_LANGUAGE') && SW_LANGUAGE && SW_LANGUAGE != "PROMPT" ) $language = session_request_item("reportico_language", SW_LANGUAGE); else $language = session_request_item("reportico_language", "en_gb"); // language not found the default to first $found = false; foreach ( $langs as $k => $v ) { if ( $v["value"] == $language ) { $found = true; break; } } if ( !$found && count($langs) > 0 ) $language = $langs[0]["value"]; // If project has change then change to default project language // Ignore for now as want to use chosen Administrator language if set //if ( $last_project && ( $last_project != $project ) ) //{ //$language = SW_LANGUAGE; //set_reportico_session_param("language",$language); //} if ( array_key_exists("submit_language", $_REQUEST) ) { $language = $_REQUEST["jump_to_language"]; set_reportico_session_param("reportico_language",$language); } $g_language = $language; $g_menu = $menu; $g_menu_title = $menu_title; if ( isset($dropdown_menu ) ) $g_dropdown_menu = $dropdown_menu; // Include project specific language translations load_project_language_pack($project, output_charset_to_php_charset(SW_OUTPUT_ENCODING)); return $project; }
function generate_url_params($target_format, $session_placeholder = false) { $this->apply_defaults(); $result = ""; $url = ""; $url .= "title=" . $this->convert_special_chars($this->title_actual); $url .= "&xtitle=" . $this->convert_special_chars($this->xtitle_actual); $url .= "&ytitle=" . $this->convert_special_chars($this->ytitle_actual); if ($target_format == "PDF") { $url .= "&width=" . $this->width_pdf_actual; $url .= "&height=" . $this->height_pdf_actual; } else { $url .= "&width=" . $this->width_actual; $url .= "&height=" . $this->height_actual; } $url .= "&graphcolor=" . $this->graphcolor_actual; $url .= "&gridposition=" . $this->gridpos_actual; $url .= "&xgriddisplay=" . $this->xgriddisplay_actual; $url .= "&xgridcolor=" . $this->xgridcolor_actual; $url .= "&ygriddisplay=" . $this->ygriddisplay_actual; $url .= "&ygridcolor=" . $this->ygridcolor_actual; $url .= "&titlefont=" . $this->titlefont_actual; $url .= "&titlefontstyle=" . $this->titlefontstyle_actual; $url .= "&titlefontsize=" . $this->titlefontsize_actual; $url .= "&titlecolor=" . $this->titlecolor_actual; $url .= "&xaxiscolor=" . $this->xaxiscolor_actual; $url .= "&xaxisfont=" . $this->xaxisfont_actual; $url .= "&xaxisfontstyle=" . $this->xaxisfontstyle_actual; $url .= "&xaxisfontsize=" . $this->xaxisfontsize_actual; $url .= "&xaxisfontcolor=" . $this->xaxisfontcolor_actual; $url .= "&yaxiscolor=" . $this->yaxiscolor_actual; $url .= "&yaxisfont=" . $this->yaxisfont_actual; $url .= "&yaxisfontstyle=" . $this->yaxisfontstyle_actual; $url .= "&yaxisfontsize=" . $this->yaxisfontsize_actual; $url .= "&yaxisfontcolor=" . $this->yaxisfontcolor_actual; $url .= "&xtitlefont=" . $this->xtitlefont_actual; $url .= "&xtitlefontstyle=" . $this->xtitlefontstyle_actual; $url .= "&xtitlefontsize=" . $this->xtitlefontsize_actual; $url .= "&xtitlecolor=" . $this->xtitlecolor_actual; $url .= "&xtickint=" . $this->xtickinterval_actual; $url .= "&xticklabint=" . $this->xticklabelinterval_actual; $url .= "&ytitlefont=" . $this->ytitlefont_actual; $url .= "&ytitlefontstyle=" . $this->ytitlefontstyle_actual; $url .= "&ytitlefontsize=" . $this->ytitlefontsize_actual; $url .= "&ytitlecolor=" . $this->ytitlecolor_actual; $url .= "&ytickint=" . $this->ytickinterval_actual; $url .= "&yticklabint=" . $this->yticklabelinterval_actual; $url .= "&margincolor=" . $this->margincolor_actual; $url .= "&marginleft=" . $this->marginleft_actual; $url .= "&marginright=" . $this->marginright_actual; $url .= "&margintop=" . $this->margintop_actual; $url .= "&marginbottom=" . $this->marginbottom_actual; $url .= "&xlabels=" . implode(",", $this->xlabels); foreach ($this->plot as $k => $v) { $str = implode(",", $v["data"]); $url .= "&plotname{$k}=" . $v["name"]; $url .= "&plotdata{$k}={$str}"; $url .= "&plottype{$k}=" . $v["type"]; $url .= "&plotlinecolor{$k}=" . $v["linecolor"]; if ($v["legend"]) { $url .= "&plotlegend{$k}=" . $v["legend"]; } if ($v["fillcolor"]) { $url .= "&plotfillcolor{$k}=" . $v["fillcolor"]; } } if ($session_placeholder) { $ses = "graph_" . $session_placeholder; set_reportico_session_param($ses, $url); $url = "graphid=" . $ses . "&time=" . time(); } // Select the appropriate reporting engine $dyngraph = "dyngraph.php"; if (defined("SW_GRAPH_ENGINE") && SW_GRAPH_ENGINE == "PCHART") { $dyngraph = "dyngraph_pchart.php"; } $dr = get_reportico_url_path(); $dyngraph = $dr . "/" . find_best_url_in_include_path($dyngraph); if ($this->reportico->framework_parent) { $dyngraph = ""; if ($this->reportico->reportico_ajax_mode == "2") { $dyngraph = preg_replace("/ajax/", "graph", $this->reportico->reportico_ajax_script_url); } } $forward_url_params = session_request_item('forward_url_get_parameters_graph'); if (!$forward_url_params) { $forward_url_params = session_request_item('forward_url_get_parameters', $this->reportico->forward_url_get_parameters); } if ($forward_url_params) { $url .= "&" . $forward_url_params; } $url .= "&reportico_call_mode=graph_pchart"; $url .= "&reportico_session_name=" . reportico_session_name(); $result = '<img class="swRepGraph" src=\'' . $dyngraph . '?' . $url . '\'>'; return $result; }
function imagequery($imagesql, $width = 200) { $conn =& $this->datasource; //$imagesql = str_replace($imagesql, '"', "'"); $imagesql = preg_replace("/'/", "\"", $imagesql); //$params="driver=".$conn->driver."&dbname=".$conn->database."&hostname=".$conn->host_name; $params = "dummy=xxx"; // Link to db image depaends on the framework used. For straight reportico, its a call to the imageget.php // file, for Joomla it must go through the Joomla index file $imagegetpath = dirname($this->url_path_to_reportico_runner) . "/" . find_best_url_in_include_path("imageget.php"); if ($this->framework_parent) { $imagegetpath = ""; if ($this->reportico_ajax_mode == "2") { $imagegetpath = preg_replace("/ajax/", "dbimage", $this->reportico_ajax_script_url); } } $forward_url_params = session_request_item('forward_url_get_parameters_dbimage'); if (!$forward_url_params) { $forward_url_params = session_request_item('forward_url_get_parameters', $this->forward_url_get_parameters); } if ($forward_url_params) { $params .= "&" . $forward_url_params; } $params .= "&reportico_session_name=" . reportico_session_name(); $result = '<img width="' . $width . '" src=\'' . $imagegetpath . '?' . $params . '&reportico_call_mode=dbimage&imagesql=' . $imagesql . '\'>'; return $result; }
function before_group_headers() { //if ( $this->inOverflow ) //return; if (session_request_item("target_style", "TABLE") == "FORM") { return; } // Work out which groups have triggered trailer by passing // through highest to lowest level .. group changes at level cause change at lower // also last line does too!! $uppergroupchanged = false; reset($this->query->groups); if ($this->query->groups) { do { $group = current($this->query->groups); $group->change_triggered = false; if ($uppergroupchanged || $this->query->changed($group->group_name) || $this->last_line) { $group->change_triggered = true; $uppergroupchanged = true; } } while (next($this->query->groups)); } $changect = 0; reset($this->query->groups); foreach ($this->query->groups as $name => $group) { if (count($group->headers) > 0 && ($group->group_name == "REPORT_BODY" && $this->line_count == 0 || $group->change_triggered)) { if ($changect == 0 && $this->page_line_count > 0) { $changect++; $this->apply_format($group, "before_header"); $this->format_group_header_start($group->get_format("before_header") == "newpage"); } else { if ($changect == 0 || 1) { $this->format_group_header_start($this->page_line_count > 0 && $group->get_format("before_header") == "newpage"); } } if (get_reportico_session_param("target_show_group_headers")) { for ($i = 0; $i < count($group->headers); $i++) { $col =& $group->headers[$i]["GroupHeaderColumn"]; $custom = $group->headers[$i]["GroupHeaderCustom"]; $this->format_group_header($col, $custom); } } if ($graphs =& $this->query->get_graph_by_name($group->group_name)) { foreach ($graphs as $graph) { $graph->clear_data(); } } $this->format_group_header_end(); $this->apply_format($group, "after_header"); } else { if ($group->group_name == "REPORT_BODY" && $this->line_count == 0 || $this->query->changed($group->group_name)) { if ($graphs =& $this->query->get_graph_by_name($group->group_name)) { foreach ($graphs as $graph) { $graph->clear_data(); } } } } } // Show column headers for HTML/CSV on group change, or on first line of report, or on new page if (!$this->page_started && ($this->query->target_format == "HTML" || $this->query->target_format == "HTMLPRINT") || $this->query->target_format != "CSV" && $changect > 0 || $this->page_line_count == 0) { $this->format_report_detail_start(); if ($this->query->target_format == "PDF") { $this->column_header_required = true; } else { $this->format_headers(); } $this->page_styles_started = true; } }
function each_line($val) { if (!$this->columns_calculated) { // Calulate position and width of column detail taking into account // Report Body and Page styles $this->calculateColumnMetrics(); $this->columns_calculated = true; } reportico_report::each_line($val); if (session_request_item("target_style", "TABLE") == "FORM") { $this->end_line(); // Throw new page if set to throw between rows $formpagethrow = $this->query->get_attribute("formBetweenRows"); if ($this->line_count > 1 && $formpagethrow == "newpage") { $this->finish_page(); $this->begin_page(); } // Throw new page if current position + number headers + line + headers > than bottom margin $ln = 0; $totheaderheight = 0; $prevheight = $this->calculated_line_height; $this->apply_style_tags("ROW", $this->query->output_before_form_row_styles); $y = $this->document->GetY(); $this->set_position($this->abs_left_margin, $y); $this->unapply_style_tags("ROW", $this->query->output_before_form_row_styles); foreach ($this->query->groups as $val) { for ($i = 0; $i < count($val->headers); $i++) { $col =& $val->headers[$i]["GroupHeaderColumn"]; $this->format_group_header($col, false); $totheaderheight += $this->calculated_line_height; } } foreach ($this->query->display_order_set["column"] as $k => $w) { if ($w->attributes["column_display"] != "show") { continue; } $ct++; $this->format_group_header($w, false); $totheaderheight += $this->calculated_line_height; } $this->calculated_line_height = $totheaderheight; $y = $this->document->GetY(); $this->check_page_overflow(); $this->calculated_line_height = $prevheight; // Between form solid line or blank line if ($formpagethrow == "blankline") { $this->end_line(); $this->end_line(); } else { $this->end_line(); $this->apply_style_tags("AFTERFORMROW", $this->query->output_after_form_row_styles); $y = $this->document->GetY(); $this->set_position($this->abs_left_margin, $y); $this->draw_cell($this->abs_right_margin - $this->abs_left_margin, $this->vsize, "RR"); // Blank cell to continue page breaking at this size $this->unapply_style_tags("AFTERFORMROW", $this->query->output_after_form_row_styles); $this->end_line(); } return; } $y = $this->document->GetY(); $this->check_graphic_fit(); $this->yjump = 0; if ($this->body_display == "show" && get_reportico_session_param("target_show_detail")) { $this->row_styles = array(); $this->apply_style_tags("EACHHEADMID", $this->mid_cell_reportbody_styles, false, false, "ROW"); $this->apply_style_tags("EACHLINEMID", $this->mid_row_page_styles, false, false, "ROW"); $this->apply_style_tags("ROW2", $this->mid_cell_row_styles, false, false, "ROW"); $this->draw_mode = "CALCULATE"; $this->no_columns_printed = 0; $this->no_columns_to_print = 0; $this->cell_row_top_addition = $this->all_page_row_styles["style_border_top"]; $this->cell_row_bottom_addition = $this->all_page_row_styles["style_border_bottom"]; foreach ($this->columns as $col) { $this->format_column($col); } $this->cell_row_top_addition = 0; $this->cell_row_bottom_addition = 0; $this->unapply_style_tags("ROW2", $this->mid_cell_row_styles); $this->unapply_style_tags("EACHLINEMID", $this->mid_row_page_styles); $this->unapply_style_tags("EACHHEADMID", $this->mid_cell_reportbody_styles); $this->draw_mode = "DRAW"; $this->check_page_overflow(); $prev_calculated_line_height = $this->calculated_line_height; $prev_current_line_height = $this->current_line_height; $prev_max_line_height = $this->max_line_height; if ($this->column_header_required) { $this->format_headers(); $this->column_header_required = false; } $this->current_line_height = $prev_current_line_height; $this->calculated_line_height = $prev_calculated_line_height; $this->max_line_height = $prev_max_line_height; // Line page wrapper $this->new_report_page_line_by_style("LINE5PAGE", $this->mid_page_reportbody_styles, false); $this->new_report_page_line_by_style("LINE2PAGE", $this->mid_page_page_styles, false); $this->new_report_page_line_by_style("LINE2PAGE", $this->all_page_row_styles, false); // Page Styles $this->apply_style_tags("EACHHEADMID", $this->mid_cell_reportbody_styles, false, false, "ROW"); $this->apply_style_tags("EACHLINEMID", $this->mid_row_page_styles, false, false, "ROW"); $this->apply_style_tags("ROW2", $this->mid_cell_row_styles, false, false, "ROW"); $this->cell_row_top_addition = $this->all_page_row_styles["style_border_top"]; $this->cell_row_bottom_addition = $this->all_page_row_styles["style_border_bottom"]; $this->no_columns_printed = 0; foreach ($this->columns as $col) { $this->format_column($col); } $this->cell_row_top_addition = 0; $this->cell_row_bottom_addition = 0; $this->page_line_count++; $this->unapply_style_tags("ROW2", $this->mid_cell_row_styles); $this->unapply_style_tags("EACHLINEMID", $this->mid_row_page_styles); $this->unapply_style_tags("EACHHEADMID", $this->mid_cell_reportbody_styles); $nextliney = $this->document->GetY() + $this->max_line_height; $this->end_line(); } }
function get_reportico_url_path() { $newpath = "reportico.php"; $found = find_file_to_include($newpath, $newpath, $reltoinclude); $newpath = get_relative_path(str_replace("/", "\\", realpath($newpath)), dirname(realpath($_SERVER["SCRIPT_FILENAME"]))); $above = dirname($_SERVER["SCRIPT_NAME"]); if ($above == "/") { $above = ""; } $url_path = $above . "/" . session_request_item('reporticourl', dirname($newpath)); // If reportico source files are installed in root directory or in some other // scenarios such as an invalid linkbaseurl parameter the dirname of the // the reportico files returns just a slash (backslash on windows) so // return a true path if ($url_path == "/" || $url_path == "\\") { $url_path = "/"; } else { $url_path = $url_path . "/"; } return $url_path; }
function each_line($val) { // PDF reportico_report::each_line($val); if (session_request_item("target_style", "TABLE") == "FORM") { $this->end_line(); // Throw new page if set to throw between rows $formpagethrow = $this->query->get_attribute("formBetweenRows"); if ($this->line_count > 1 && $formpagethrow == "newpage") { $this->finish_page(); $this->begin_page(); } // Throw new page if current position + number headers + line + headers > than bottom margin $ln = 0; $totheaderheight = 0; $prevheight = $this->calculated_line_height; $this->apply_style_tags($this->query->output_before_form_row_styles); $y = $this->document->GetY(); $this->set_position($this->abs_left_margin, $y); $this->draw_cell(400, $this->vsize, ""); // Blank cell to continue page breaking at this size $this->unapply_style_tags($this->query->output_before_form_row_styles); foreach ($this->query->groups as $val) { for ($i = 0; $i < count($val->headers); $i++) { $col =& $val->headers[$i]["GroupHeaderColumn"]; $this->format_group_header($col, false); $totheaderheight += $this->calculated_line_height; } } foreach ($this->query->display_order_set["column"] as $k => $w) { if ($w->attributes["column_display"] != "show") { continue; } $ct++; $this->format_group_header($w, false); $totheaderheight += $this->calculated_line_height; } $this->calculated_line_height = $totheaderheight; $y = $this->document->GetY(); $this->check_page_overflow(); $this->calculated_line_height = $prevheight; // Between form solid line or blank line if ($formpagethrow == "blankline") { $this->end_line(); $this->end_line(); } else { $this->end_line(); $this->apply_style_tags($this->query->output_after_form_row_styles); $y = $this->document->GetY(); $this->set_position($this->abs_left_margin, $y); $this->draw_cell($this->abs_right_margin - $this->abs_left_margin, $this->vsize, ""); // Blank cell to continue page breaking at this size $this->unapply_style_tags($this->query->output_after_form_row_styles); $this->end_line(); } return; } $y = $this->document->GetY(); $this->check_graphic_fit(); $this->yjump = 0; if ($this->body_display == "show" && get_reportico_session_param("target_show_detail")) { $this->row_styles = array(); $this->apply_style_tags($this->query->output_row_styles, false, false, "ROW"); $this->draw_mode = "CALCULATE"; $this->no_columns_printed = 0; $this->no_columns_to_print = 0; foreach ($this->columns as $col) { $this->format_column($col); } $this->unapply_style_tags($this->query->output_row_styles); $this->draw_mode = "DRAW"; $this->check_page_overflow(); //$this->set_position($this->abs_left_margin, false); //$this->draw_cell($this->abs_right_margin - $this->abs_left_margin, $this->calculated_line_height, "xx", 0, 0); //$this->disable_style_tag($this->query->output_header_styles, "border-width"); $this->apply_style_tags($this->query->output_row_styles, false, false, "ROW"); $this->no_columns_printed = 0; foreach ($this->columns as $col) { $this->format_column($col); } $this->page_line_count++; $this->unapply_style_tags($this->query->output_row_styles); $nextliney = $this->document->GetY() + $this->max_line_height; $this->end_line(); $this->set_position(false, $nextliney); } //if ( $this->yjump ) //$this->set_position(false, $y + $this->yjump); //if ( $y + $this->vsize > $this->abs_bottom_margin ) //{ //$this->finish_page(); //$this->begin_page(); //} }
function pre_draw_smarty() { $text = ""; switch ($this->panel_type) { case "LOGIN": $this->smarty->assign('SHOW_LOGIN', true); break; case "LOGOUT": if (!SW_DB_CONNECT_FROM_CONFIG) { $this->smarty->assign('SHOW_LOGOUT', true); } break; case "MAINTAIN": $text .= $this->query->xmlin->xml2html($this->query->xmlin->data); break; case "BODY": $this->smarty->assign('EMBEDDED_REPORT', $this->query->embedded_report); break; case "MAIN": break; case "TITLE": $reporttitle = sw_translate($this->query->derive_attribute("ReportTitle", "Set Report Title")); // For Admin options title should be translatable // Also for configureproject.xml global $g_project; if ($this->query->xmlinput == "configureproject.xml" || $g_project == "admin") { $this->smarty->assign('TITLE', template_xlate($reporttitle)); } else { $this->smarty->assign('TITLE', $reporttitle); } $submit_self = $this->query->get_action_url(); $forward = session_request_item('forward_url_get_parameters', ''); if ($forward) { $submit_self .= "?" . $forward; } $this->smarty->assign('SCRIPT_SELF', $submit_self); break; case "CRITERIA": $this->smarty->assign('SHOW_CRITERIA', true); break; case "CRITERIA_FORM": $dispcrit = array(); $ct = 0; // Build Select Column List $this->query->expand_col = false; foreach ($this->query->lookup_queries as $k => $col) { if ($col->criteria_type) { if (array_key_exists("EXPAND_" . $col->query_name, $_REQUEST)) { $this->query->expand_col =& $this->query->lookup_queries[$col->query_name]; } if (array_key_exists("EXPANDCLEAR_" . $col->query_name, $_REQUEST)) { $this->query->expand_col =& $this->query->lookup_queries[$col->query_name]; } if (array_key_exists("EXPANDSELECTALL_" . $col->query_name, $_REQUEST)) { $this->query->expand_col =& $this->query->lookup_queries[$col->query_name]; } if (array_key_exists("EXPANDSEARCH_" . $col->query_name, $_REQUEST)) { $this->query->expand_col =& $this->query->lookup_queries[$col->query_name]; } $crititle = ""; if ($tooltip = $col->derive_attribute("tooltip", false)) { $title = $col->derive_attribute("column_title", $col->query_name); $crittitle = '<a HREF="" onMouseOver="return overlib(\'' . $tooltip . '\',STICKY,CAPTION,\'' . $title . '\',DELAY,400);" onMouseOut="nd();" onclick="return false;">' . $title . '</A>'; } else { $crittitle = $col->derive_attribute("column_title", $col->query_name); } $critsel = $col->format_form_column(); $critexp = false; if ($col->expand_display && $col->expand_display != "NOINPUT") { $critexp = true; } $dispcrit[] = array("name" => $col->query_name, "title" => sw_translate($crittitle), "entry" => $critsel, "expand" => $critexp); } $this->smarty->assign("CRITERIA_ITEMS", $dispcrit); } break; case "CRITERIA_EXPAND": // Expand Cell Table $this->smarty->assign("SHOW_EXPANDED", false); if ($this->query->expand_col) { $this->smarty->assign("SHOW_EXPANDED", true); $this->smarty->assign("EXPANDED_ITEM", $this->query->expand_col->query_name); $this->smarty->assign("EXPANDED_SEARCH_VALUE", false); $title = $this->query->expand_col->derive_attribute("column_title", $this->query->expand_col->query_name); $this->smarty->assign("EXPANDED_TITLE", sw_translate($title)); // Only use then expand value if Search was press $expval = ""; if ($this->query->expand_col->submitted('MANUAL_' . $this->query->expand_col->query_name)) { $tmpval = $_REQUEST['MANUAL_' . $this->query->expand_col->query_name]; if (strlen($tmpval) > 1 && substr($tmpval, 0, 1) == "?") { $expval = substr($tmpval, 1); } } if ($this->query->expand_col->submitted('EXPANDSEARCH_' . $this->query->expand_col->query_name)) { if (array_key_exists("expand_value", $_REQUEST)) { $expval = $_REQUEST["expand_value"]; } } $this->smarty->assign("EXPANDED_SEARCH_VALUE", $expval); $text .= $this->query->expand_col->expand_template(); } else { if (!($desc = sw_translate_report_desc($this->query->xmloutfile))) { $desc = $this->query->derive_attribute("ReportDescription", false); } $this->smarty->debug = true; $this->smarty->assign("REPORT_DESCRIPTION", $desc); } break; case "USERINFO": $this->smarty->assign('DB_LOGGEDON', true); if (!SW_DB_CONNECT_FROM_CONFIG) { $this->smarty->assign('DBUSER', $this->query->datasource->user_name); } else { $this->smarty->assign('DBUSER', false); } break; case "RUNMODE": if ($this->query->execute_mode == "MAINTAIN") { $this->smarty->assign('SHOW_MODE_MAINTAIN_BOX', true); } else { // In demo mode for reporitco web site allow design if ($this->query->allow_maintain == "DEMO") { $this->smarty->assign('SHOW_DESIGN_BUTTON', true); } // Dont allow design option when configuring project if ($this->query->xmlinput != "configureproject.xml" && $this->query->xmlinput != "deleteproject.xml") { $this->smarty->assign('SHOW_DESIGN_BUTTON', true); } if ($this->query->xmlinput == "deleteproject.xml") { $this->smarty->assign('SHOW_ADMIN_BUTTON', true); $this->smarty->assign('SHOW_PROJECT_MENU_BUTTON', false); } else { if ($this->query->xmlinput == "configureproject.xml") { $this->smarty->assign('SHOW_ADMIN_BUTTON', true); } } } $create_report_url = $this->query->create_report_url; $configure_project_url = $this->query->configure_project_url; $forward = session_request_item('forward_url_get_parameters', ''); if ($forward) { $configure_project_url .= "&" . $forward; $create_report_url .= "&" . $forward; } $this->smarty->assign('CONFIGURE_PROJECT_URL', $configure_project_url); $this->smarty->assign('CREATE_REPORT_URL', $create_report_url); break; case "MENUBUTTON": $prepare_url = $this->query->prepare_url; $menu_url = $this->query->menu_url; $forward = session_request_item('forward_url_get_parameters', ''); if ($forward) { $menu_url .= "&" . $forward; $prepare_url .= "&" . $forward; } $this->smarty->assign('MAIN_MENU_URL', $menu_url); $this->smarty->assign('RUN_REPORT_URL', $prepare_url); $admin_menu_url = $this->query->admin_menu_url; $forward = session_request_item('forward_url_get_parameters', ''); if ($forward) { $admin_menu_url .= "&" . $forward; } $this->smarty->assign('ADMIN_MENU_URL', $admin_menu_url); break; case "MENU": break; case "PROJECTITEM": if ($this->text != ".." && $this->text != "admin") { $forward = session_request_item('forward_url_get_parameters', ''); if ($forward) { $forward .= "&"; } $this->query->projectitems[] = array("label" => $this->text, "url" => $this->query->get_action_url() . "?" . $forward . "execute_mode=MENU&project=" . $this->program . "&reportico_session_name=" . reportico_session_name()); } break; case "MENUITEM": $forward = session_request_item('forward_url_get_parameters', ''); if ($forward) { $forward .= "&"; } $this->query->menuitems[] = array("label" => $this->text, "url" => $this->query->get_action_url() . "?" . $forward . "execute_mode=PREPARE&xmlin=" . $this->program . "&reportico_session_name=" . reportico_session_name()); break; case "TOPMENU": $this->smarty->assign('SHOW_TOPMENU', true); break; case "DESTINATION": $this->smarty->assign('SHOW_OUTPUT', true); if (defined("SW_ALLOW_OUTPUT") && !SW_ALLOW_OUTPUT) { $this->smarty->assign('SHOW_OUTPUT', false); } $op = session_request_item("target_format", "HTML"); $output_types = array("HTML" => "", "PDF" => "", "CSV" => "", "XML" => "", "JSON" => "", "GRID" => ""); $output_types[$op] = "checked"; $noutput_types = array(); foreach ($output_types as $val) { $noutput_types[] = $val; } $this->smarty->assign('OUTPUT_TYPES', $noutput_types); $op = session_request_item("target_style", "TABLE"); $output_styles = array("TABLE" => "", "FORM" => ""); $output_styles[$op] = "checked"; $noutput_styles = array(); foreach ($output_styles as $val) { $noutput_styles[] = $val; } $this->smarty->assign('OUTPUT_STYLES', $noutput_styles); $attach = get_request_item("target_attachment", "1", $this->query->first_criteria_selection); if ($attach) { $attach = "checked"; } $this->smarty->assign("OUTPUT_ATTACH", $attach); $this->smarty->assign("OUTPUT_SHOWGRAPH", get_reportico_session_param("target_show_graph") ? "checked" : ""); $this->smarty->assign("OUTPUT_SHOWCRITERIA", get_reportico_session_param("target_show_criteria") ? "checked" : ""); $this->smarty->assign("OUTPUT_SHOWDETAIL", get_reportico_session_param("target_show_detail") ? "checked" : ""); $this->smarty->assign("OUTPUT_SHOWGROUPHEADERS", get_reportico_session_param("target_show_group_headers") ? "checked" : ""); $this->smarty->assign("OUTPUT_SHOWGROUPTRAILERS", get_reportico_session_param("target_show_group_trailers") ? "checked" : ""); $this->smarty->assign("OUTPUT_SHOWCOLHEADERS", get_reportico_session_param("target_show_column_headers") ? "checked" : ""); if ($this->query->allow_debug && SW_ALLOW_DEBUG) { $this->smarty->assign("OUTPUT_SHOW_DEBUG", true); $debug_mode = get_request_item("debug_mode", "0", $this->query->first_criteria_selection); $this->smarty->assign("DEBUG_NONE", ""); $this->smarty->assign("DEBUG_LOW", ""); $this->smarty->assign("DEBUG_MEDIUM", ""); $this->smarty->assign("DEBUG_HIGH", ""); switch ($debug_mode) { case 1: $this->smarty->assign("DEBUG_LOW", "selected"); break; case 2: $this->smarty->assign("DEBUG_MEDIUM", "selected"); break; case 3: $this->smarty->assign("DEBUG_HIGH", "selected"); break; default: $this->smarty->assign("DEBUG_NONE", "selected"); } if ($debug_mode) { $debug_mode = "checked"; } $this->smarty->assign("OUTPUT_DEBUG", $debug_mode); } $checked = ""; $this->smarty->assign("OUTPUT_SHOW_SHOWGRAPH", false); if (count($this->query->graphs) > 0) { $checked = ""; if ($this->query->get_attribute("graphDisplay")) { $checked = "checked"; } if (!get_request_item("target_show_graph") && !$this->query->first_criteria_selection) { $checked = ""; } $this->smarty->assign("OUTPUT_SHOW_SHOWGRAPH", true); $this->smarty->assign("OUTPUT_SHOWDET", $checked); } break; case "STATUS": $msg = ""; if ($this->query->status_message) { $this->smarty->assign('STATUSMSG', $this->query->status_message); } global $g_system_debug; if (!$g_system_debug) { $g_system_debug = array(); } foreach ($g_system_debug as $val) { $msg .= "<hr>" . $val["dbgarea"] . " - " . $val["dbgstr"] . "\n"; } if ($msg) { $msg = "<BR><B>" . template_xlate("INFORMATION") . "</B>" . $msg; } $this->smarty->assign('STATUSMSG', $msg); break; case "ERROR": $msg = ""; global $g_system_errors; $lastval = false; $duptypect = 0; if (!$g_system_errors) { $g_system_errors = array(); } foreach ($g_system_errors as $val) { if ($val["errno"] == E_USER_ERROR || $val["errno"] == E_USER_WARNING) { $msg .= "<HR>"; if ($val["errarea"]) { $msg .= $val["errarea"] . " - "; } if ($val["errtype"]) { $msg .= $val["errtype"] . ": "; } $msg .= $val["errstr"]; $msg .= $val["errsource"]; $msg .= "\n"; } else { // Dont keep repeating Assignment errors $msg .= "<HR>"; //if ( $val["errct"] > 1 ) $msg .= $val["errct"]." occurrences of "; // PPP Change $msg .= $val["errarea"]." - ".$val["errtype"].": ".$val["errstr"]. //" at line ".$val["errline"]." in ".$val["errfile"].$val["errsource"]; //"\n"; if ($val["errarea"]) { $msg .= $val["errarea"] . " - "; } if ($val["errtype"]) { $msg .= $val["errtype"] . ": "; } $msg .= $val["errstr"]; //$msg .= " at line ".$val["errline"]." in ".$val["errfile"].$val["errsource"]; "\n"; $duptypect = 0; } $lastval = $val; } if ($duptypect > 0) { $msg .= "<BR>{$duptypect} more errors like this<BR>"; } if ($msg) { $msg = "<B>" . template_xlate("UNABLE_TO_CONTINUE") . ":</B>" . $msg; } $this->smarty->assign('ERRORMSG', $msg); set_reportico_session_param('latestRequest', ""); break; } return $text; }
function before_group_headers() { //if ( $this->inOverflow ) //return; if (session_request_item("target_style", "TABLE") == "FORM") { return; } $changect = 0; reset($this->query->groups); foreach ($this->query->groups as $name => $group) { if (count($group->headers) > 0 && ($group->group_name == "REPORT_BODY" && $this->line_count == 0 || $this->query->changed($group->group_name))) { if ($changect == 0 && $this->page_line_count > 0) { $changect++; $this->apply_format($group, "before_header"); $this->format_group_header_start($group->get_format("before_header") == "newpage"); } else { if ($changect == 0 || 1) { $this->format_group_header_start($this->page_line_count > 0 && $group->get_format("before_header") == "newpage"); } } if (get_reportico_session_param("target_show_group_headers")) { for ($i = 0; $i < count($group->headers); $i++) { $col =& $group->headers[$i]["GroupHeaderColumn"]; $custom = $group->headers[$i]["GroupHeaderCustom"]; $this->format_group_header($col, $custom); } } if ($graphs =& $this->query->get_graph_by_name($group->group_name)) { foreach ($graphs as $graph) { $graph->clear_data(); } } $this->format_group_header_end(); $this->apply_format($group, "after_header"); } else { if ($group->group_name == "REPORT_BODY" && $this->line_count == 0 || $this->query->changed($group->group_name)) { if ($graphs =& $this->query->get_graph_by_name($group->group_name)) { foreach ($graphs as $graph) { $graph->clear_data(); } } } } } // Show column headers for HTML/CSV on group change, or on first line of report, or on new page if (!$this->page_started && ($this->query->target_format == "HTML" || $this->query->target_format == "HTMLPRINT") || $this->query->target_format != "CSV" && $changect > 0 || $this->page_line_count == 0) { $this->format_report_detail_start(); $this->format_headers(); $this->page_styles_started = true; } }