Exemplo n.º 1
0
 /**
  * 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") . '">&nbsp;</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") . '">&nbsp;</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") . '">' . '&nbsp;' . '</a></div>';
     }
 }
Exemplo n.º 3
0
 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();
     }
 }
Exemplo n.º 4
0
/**
 * 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;
}
Exemplo n.º 5
0
 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;
     }
 }
Exemplo n.º 8
0
 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();
     }
 }
Exemplo n.º 9
0
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();
     //}
 }
Exemplo n.º 11
0
 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 . "&amp;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 . "&amp;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;
 }
Exemplo n.º 12
0
 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;
     }
 }