function execute($mode=false, $draw=true) { global $g_system_errors; global $g_system_debug; global $g_code_area; global $g_code_source; global $g_debug_mode; global $g_language; global $g_project; global $g_session_namespace; global $g_session_namespace_key; if ( $this->session_namespace ) $g_session_namespace = $this->session_namespace; if ( $g_session_namespace ) $g_session_namespace_key = "reportico_".$g_session_namespace; // If a session namespace doesnt exist create one if ( !isset($_SESSION[$g_session_namespace_key]) || isset($_REQUEST['clear_session']) || $this->clear_reportico_session) initialize_reportico_namespace($g_session_namespace_key); // Work out the mode (ADMIN, PREPARE, MENU, EXECUTE, MAINTAIN based on all parameters ) if ( !$mode ) $mode = $this->get_execute_mode(); $old_error_handler = set_error_handler("ErrorHandler"); set_exception_handler("ExceptionHandler"); // If new session, we need to use initial project, report etc, otherwise ignore them $this->handle_initial_settings(); // Fetch project config $this->set_project_environment($this->initial_project, $this->projects_folder, $this->admin_projects_folder); register_session_param("external_user", $this->external_user); register_session_param("external_param1", $this->external_param1); register_session_param("external_param2", $this->external_param2); register_session_param("external_param3", $this->external_param3); $this->user_parameters = register_session_param("user_parameters", $this->user_parameters); $this->dropdown_menu = register_session_param("dropdown_menu", $this->dropdown_menu); $this->static_menu = register_session_param("static_menu", $this->static_menu); $this->charting_engine = register_session_param("charting_engine", $this->charting_engine); $this->charting_engine_html = register_session_param("charting_engine_html", $this->charting_engine_html); $this->output_template_parameters = register_session_param("output_template_parameters", $this->output_template_parameters); $this->dynamic_grids = register_session_param("dynamic_grids", $this->dynamic_grids); $this->dynamic_grids_sortable = register_session_param("dynamic_grids_sortable", $this->dynamic_grids_sortable); $this->dynamic_grids_searchable = register_session_param("dynamic_grids_searchable", $this->dynamic_grids_searchable); $this->dynamic_grids_paging = register_session_param("dynamic_grids_paging", $this->dynamic_grids_paging); $this->dynamic_grids_page_size = register_session_param("dynamic_grids_page_size", $this->dynamic_grids_page_size); // We are in AJAX mode if it is passed throuh if ( isset($_REQUEST["reportico_ajax_called"]) ) $this->reportico_ajax_called = $_REQUEST["reportico_ajax_called"]; //set_reportico_session_param("reportico_ajax_called", $_REQUEST["reportico_ajax_called"] ); // Store whether in framework set_reportico_session_param("framework_parent",$this->framework_parent); // Set access mode to decide whether to allow user to access Design Mode, Menus, Criteria or just run a single report $this->access_mode = session_item("access_mode", $this->access_mode ); if ( $this->access_mode == "DEMO" ) $this->allow_maintain = "DEMO"; // Convert input and out charsets into their PHP versions // for later iconv use $this->db_charset = db_charset_to_php_charset(SW_DB_ENCODING); $this->output_charset = output_charset_to_php_charset(SW_OUTPUT_ENCODING); // Ensure Smarty Template folder exists and is writeable $include_template_dir=$this->compiled_templates_folder; if ( !( is_dir ("templates_c")) ) { find_file_to_include("templates_c", $include_template_dir, $include_template_dir); } if ( !( is_dir ($include_template_dir)) ) { echo "Unable to generate output. The <b>$include_template_dir</b> folder does not exist within the main reportico area. Please create this folder and ensure it has read, write and execute permissions and then retry."; die; } if ( !sw_path_executable( $include_template_dir ) ) { echo "Unable to generate output. The <b>$include_template_dir</b> folder does not have read, write and execute permissions. Please correct and retry."; die; } $g_debug_mode = get_request_item("debug_mode", "0", $this->first_criteria_selection ); if ( !$mode ) { $mode=$this->get_execute_mode(); } // If the project is the ADMIN project then the MAin Menu will be the Admin Page if ( $g_project == "admin" && $mode == "MENU" ) { $mode = "ADMIN"; } // If this is PREPARE mode then we want to identify whether user has entered prepare // screen for first time so we know whether to set defaults or not switch ( $mode ) { case "PREPARE": $this->report_progress("Ready", "READY" ); $this->first_criteria_selection = true; // Must find ALternative to THIs for first time in testing!!! if ( array_key_exists("target_format", $_REQUEST)) { $this->first_criteria_selection = false; set_reportico_session_param("firstTimeIn",false); } if ( !isset_reportico_session_param("firstTimeIn") ) set_reportico_session_param("firstTimeIn",true); // Default output to HTML in PREPARE mode first time in if ( get_reportico_session_param("firstTimeIn") && !isset($_REQUEST["target_format"])) { $this->target_format = "HTML"; set_reportico_session_param("target_format","HTML"); } // Default style to TABLE in PREPARE mode first time in //if ( get_reportico_session_param("firstTimeIn") && !isset($_REQUEST["target_style"])) //{ //$this->target_format = "TABLE"; //set_reportico_session_param("target_style","TABLE"); //echo "set table "; //} break; case "EXECUTE": // If external page has supplied an initial output format then use it if ( $this->initial_output_format ) $_REQUEST["target_format"] = $this->initial_output_format; // If printable HTML requested force output type to HTML if ( get_request_item("printable_html") ) { $_REQUEST["target_format"] = "HTML"; } // Prompt user for report destination if target not already set - default to HTML if not set if ( !array_key_exists("target_format", $_REQUEST) && $mode == "EXECUTE" ) $_REQUEST["target_format"] = "HTML"; $this->target_format = strtoupper($_REQUEST["target_format"]); if ( array_key_exists("submit", $_REQUEST)) $this->first_criteria_selection = false; else $this->first_criteria_selection = true; if ( get_reportico_session_param("awaiting_initial_defaults") ) set_reportico_session_param("firstTimeIn",true); else if ( get_reportico_session_param("firstTimeIn") && get_request_item("refreshReport", false) ) set_reportico_session_param("firstTimeIn",true); else set_reportico_session_param("firstTimeIn",false); break; case "MAINTAIN": $this->report_progress("Ready", "READY" ); $this->first_criteria_selection = true; set_reportico_session_param("firstTimeIn",true); break; default: //$this->report_progress("Ready", "READY" ); $this->first_criteria_selection = true; set_reportico_session_param("firstTimeIn",true); break; } // If xml file is used to genearate the reportico_query, either by the xmlin session variable // or the xmlin request variable then process this before executing if ( $mode == "EXECUTE" ) { $_REQUEST['execute_mode'] = "$mode"; // If executing report then stored the REQUEST parameters unless this // is a refresh of the report in which case we want to keep the ones already there $runfromcriteriascreen = get_request_item("user_criteria_entered", false); $refreshmode = get_request_item("refreshReport", false); if ( !get_request_item("printable_html") && ( $runfromcriteriascreen || ( !isset_reportico_session_param('latestRequest') || !get_reportico_session_param('latestRequest')) ) ) { set_reportico_session_param('latestRequest',$_REQUEST); } else { if ( !$runfromcriteriascreen && $refreshmode ) { $_REQUEST = get_reportico_session_param('latestRequest'); } } } else { if ( $mode != "MODIFY" && array_key_exists('latestRequest', $_SESSION[reportico_namespace()] )) { if ( get_reportico_session_param('latestRequest') ) { $OLD_REQUEST = $_REQUEST; // If a new report is being run dont bother trying to restore previous // run crtieria if ( !get_request_item("xmlin") ) $_REQUEST = get_reportico_session_param('latestRequest'); foreach ( $OLD_REQUEST as $k => $v ) { if ( $k == 'partial_template' ) $_REQUEST[$k] = $v; if ( preg_match ( "/^EXPAND_/", $k ) ) $_REQUEST[$k] = $v; } $_REQUEST['execute_mode'] = "$mode"; } } set_reportico_session_param('latestRequest',""); } // Derive URL call of the calling script so it can be recalled in form actions when not running in AJAX mode if ( !$this->url_path_to_calling_script ) $this->url_path_to_calling_script = $_SERVER["SCRIPT_NAME"]; // Work out we are in AJAX mode $this->derive_ajax_operation(); switch ($mode) { case "MODIFY": require_once("swmodify.php"); $this->initialize_panels($mode); $engine = new reportico_db_engine($this->datasource->ado_connection->_connectionID); $status = $engine->perform_project_modifications($g_project); if ( $status["errstat"] != 0 ) { header("HTTP/1.0 404 Not Found", true); } echo json_encode($status); die; case "ADMIN": $txt = ""; $this->handle_xml_query_input($mode); $this->build_admin_screen(); $text = $this->panels["BODY"]->draw_smarty(); $this->panels["MAIN"]->smarty->debugging =false; $this->panels["MAIN"]->smarty->assign('LANGUAGES', available_languages()); $this->panels["MAIN"]->smarty->assign('CONTENT', $txt); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS', $this->dynamic_grids); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SORTABLE', $this->dynamic_grids_sortable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SEARCHABLE', $this->dynamic_grids_searchable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGING', $this->dynamic_grids_paging); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGE_SIZE', $this->dynamic_grids_page_size); restore_error_handler(); if ( $this->user_template ) $this->panels["MAIN"]->smarty->display($this->user_template.'_admin.tpl'); else $this->panels["MAIN"]->smarty->display('admin.tpl'); $old_error_handler = set_error_handler("ErrorHandler"); break; case "MENU": $this->handle_xml_query_input($mode); $this->build_menu(); load_mode_language_pack("languages", $this->output_charset); load_mode_language_pack("menu", $this->output_charset); localise_template_strings($this->panels["MAIN"]->smarty); $text = $this->panels["BODY"]->draw_smarty(); $this->panels["MAIN"]->smarty->debugging =false; $this->panels["MAIN"]->smarty->assign('CONTENT', $text); $this->panels["MAIN"]->smarty->assign('LANGUAGES', available_languages()); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS', $this->dynamic_grids); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SORTABLE', $this->dynamic_grids_sortable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SEARCHABLE', $this->dynamic_grids_searchable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGING', $this->dynamic_grids_paging); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGE_SIZE', $this->dynamic_grids_page_size); restore_error_handler(); if ( $this->user_template ) $this->panels["MAIN"]->smarty->display($this->user_template.'_menu.tpl'); else $this->panels["MAIN"]->smarty->display('menu.tpl'); $old_error_handler = set_error_handler("ErrorHandler"); break; case "PREPARE": load_mode_language_pack("languages", $this->output_charset); $this->initialize_panels($mode); $this->handle_xml_query_input($mode); $this->set_request_columns(); global $g_translations; global $g_report_desc; if ( $this->xmlinput == "deleteproject.xml" || $this->xmlinput == "configureproject.xml" || $this->xmlinput == "createtutorials.xml" || $this->xmlinput == "createproject.xml" ) { // If configuring project then use project language strings from admin project // found in projects/admin/lang.php load_project_language_pack("admin", $this->output_charset); $this->panels["MAIN"]->smarty->assign('SHOW_MINIMAINTAIN', false); } load_mode_language_pack("prepare", $this->output_charset); localise_template_strings($this->panels["MAIN"]->smarty); $text = $this->panels["BODY"]->draw_smarty(); $this->panels["MAIN"]->smarty->debugging =false; $this->panels["MAIN"]->smarty->assign('CONTENT', $text); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS', $this->dynamic_grids); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SORTABLE', $this->dynamic_grids_sortable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SEARCHABLE', $this->dynamic_grids_searchable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGING', $this->dynamic_grids_paging); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGE_SIZE', $this->dynamic_grids_page_size); $reportname = preg_replace("/.xml/", "", $this->xmloutfile.'_prepare.tpl'); restore_error_handler(); if (preg_match("/$reportname/", find_best_location_in_include_path( "templates/". $reportname ))) { $this->panels["MAIN"]->smarty->display($reportname); } else if ( $this->user_template ) $this->panels["MAIN"]->smarty->display($this->user_template.'_prepare.tpl'); else $this->panels["MAIN"]->smarty->display('prepare.tpl'); $old_error_handler = set_error_handler("ErrorHandler"); break; case "EXECUTE": load_mode_language_pack("languages", $this->output_charset); $this->initialize_panels($mode); $this->handle_xml_query_input($mode); // Set Grid display options based on report and session defaults if ( $this->attributes["gridDisplay"] != ".DEFAULT" ) $this->dynamic_grids = ( $this->attributes["gridDisplay"] == "show" ) ; if ( $this->attributes["gridSortable"] != ".DEFAULT" ) $this->dynamic_grids_sortable = ( $this->attributes["gridSortable"] == "yes" ) ; if ( $this->attributes["gridSearchable"] != ".DEFAULT" ) $this->dynamic_grids_searchable = ( $this->attributes["gridSearchable"] == "yes" ) ; if ( $this->attributes["gridPageable"] != ".DEFAULT" ) $this->dynamic_grids_paging = ( $this->attributes["gridPageable"] == "yes" ) ; if ( $this->attributes["gridPageSize"] != ".DEFAULT" && $this->attributes["gridPageSize"] ) $this->dynamic_grids_page_size = $this->attributes["gridPageSize"]; $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS', $this->dynamic_grids); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SORTABLE', $this->dynamic_grids_sortable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SEARCHABLE', $this->dynamic_grids_searchable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGING', $this->dynamic_grids_paging); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGE_SIZE', $this->dynamic_grids_page_size); $g_code_area = "Main Query"; $this->build_query(false, ""); $g_code_area = false; load_mode_language_pack("execute", $this->output_charset); localise_template_strings($this->panels["MAIN"]->smarty); if ( $this->xmlinput == "deleteproject.xml" || $this->xmlinput == "configureproject.xml" || $this->xmlinput == "createtutorials.xml" || $this->xmlinput == "createproject.xml" ) { // If configuring project then use project language strings from admin project // found in projects/admin/lang.php load_project_language_pack("admin", $this->output_charset); } if ( !get_reportico_session_param("loggedin",false) ) $text = "you are not logged in "; else $text = $this->execute_query(false); if ( $this->target_format == "SOAP" ) { close_reportico_session(); return; } // Situtations where we dont want to swithc results page - no data found, debug mode, not logged in if ( ( count($g_system_errors) > 0 || $g_debug_mode || count($g_system_debug) > 0 || !get_reportico_session_param("loggedin") ) ) { // If errors and this is an ajax request return json ajax response for first message $runfromcriteriascreen = get_request_item("user_criteria_entered", false); global $g_no_data; if ( $g_no_data && get_request_item("new_reportico_window", false ) && !$g_debug_mode && $this->target_format == "HTML" && $runfromcriteriascreen && $this->reportico_ajax_mode && count($g_system_errors) == 1 ) { header("HTTP/1.0 404 Not Found", true); $response_array = array(); $response_array["errno"] = $g_system_errors[0]["errno"]; $response_array["errmsg"] = $g_system_errors[0]["errstr"]; echo json_encode($response_array); die; } $this->initialize_panels("PREPARE"); $this->set_request_columns(); $text = $this->panels["BODY"]->draw_smarty(); $this->panels["MAIN"]->smarty->debugging =false; $title = sw_translate($this->derive_attribute("ReportTitle", "Unknown")); $this->panels["MAIN"]->smarty->assign('TITLE', $title); $this->panels["MAIN"]->smarty->assign('CONTENT', $text); if ( $this->xmlinput == "deleteproject.xml" || $this->xmlinput == "configureproject.xml" || $this->xmlinput == "createtutorials.xml" || $this->xmlinput == "createproject.xml" ) { // If configuring project then use project language strings from admin project // found in projects/admin/lang.php load_project_language_pack("admin", $this->output_charset); $this->panels["MAIN"]->smarty->assign('SHOW_MINIMAINTAIN', false); } load_mode_language_pack("languages", $this->output_charset, true); load_mode_language_pack("prepare", $this->output_charset); localise_template_strings($this->panels["MAIN"]->smarty); $reportname = preg_replace("/.xml/", "", $this->xmloutfile.'_prepare.tpl'); restore_error_handler(); if (preg_match("/$reportname/", find_best_location_in_include_path( "templates/". $reportname ))) { $this->panels["MAIN"]->smarty->display($reportname); } else if ( $this->user_template ) $this->panels["MAIN"]->smarty->display($this->user_template.'_prepare.tpl'); else $this->panels["MAIN"]->smarty->display('prepare.tpl'); $old_error_handler = set_error_handler("ErrorHandler"); } else { if ( $this->target_format != "HTML" ) { if ( $draw ) echo $text; } else { $title = sw_translate($this->derive_attribute("ReportTitle", "Unknown")); $pagestyle = $this->targets[0]->get_style_tags($this->output_reportbody_styles); $this->panels["MAIN"]->smarty->assign('REPORT_PAGE_STYLE', $pagestyle); $this->panels["MAIN"]->smarty->assign('TITLE', $title); $this->panels["MAIN"]->smarty->assign('CONTENT', $text); $this->panels["MAIN"]->smarty->assign('EMBEDDED_REPORT', $this->embedded_report); // When printing in separate html window make sure we dont treat report as embedded if ( get_request_item("new_reportico_window", false ) ) $this->panels["MAIN"]->smarty->assign('EMBEDDED_REPORT', false); if ( $this->email_recipients ) { $recipients = explode(',', $this->email_recipients); foreach ( $recipients as $rec ) { load_mode_language_pack("languages", $this->output_charset, true); load_mode_language_pack("execute", $this->output_charset); localise_template_strings($this->panels["MAIN"]->smarty); $mailtext = $this->panels["MAIN"]->smarty->fetch('execute.tpl', NULL, NULL, false); //$boundary = '-----=' . md5( uniqid ( rand() ) ); //$message = "Content-Type: text/html; name=\"my attachment\"\n"; //$message .= "Content-Transfer-Encoding: base64\n"; //$message .= "Content-Transfer-Encoding: quoted-printable\n"; //$message .= "Content-Disposition: attachment; filename=\"report.html\"\n\n"; $content_encode = chunk_split(base64_encode($mailtext)); $message = $mailtext . "\n"; //$message .= $boundary . "\n"; $headers = "From: \"Report Admin\"<*****@*****.**>\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Transfer-Encoding: base64\n"; //$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\""; $headers = "Content-Type: text/html\n"; mail ( $rec, "$title", $message, $headers ); } } else { load_mode_language_pack("languages", $this->output_charset, true); load_mode_language_pack("execute", $this->output_charset); localise_template_strings($this->panels["MAIN"]->smarty); $reportname = preg_replace("/.xml/", "", $this->xmloutfile.'_execute.tpl'); restore_error_handler(); if (preg_match("/$reportname/", find_best_location_in_include_path( "templates/". $reportname ))) { $this->panels["MAIN"]->smarty->display($reportname); } else if ( $this->user_template ) $this->panels["MAIN"]->smarty->display($this->user_template.'_execute.tpl'); else { $this->panels["MAIN"]->smarty->display('execute.tpl'); } $old_error_handler = set_error_handler("ErrorHandler"); } } } break; case "MAINTAIN": // Avoid url manipulation by only allowing maintain mode in design or demo mode $this->handle_xml_query_input($mode); if ( $this->top_level_query ) { $this->initialize_panels($mode); if ( !($this->login_type == "DESIGN" || $this->access_mode == "DEMO") ) break; load_mode_language_pack("maintain", $this->output_charset); localise_template_strings($this->panels["MAIN"]->smarty); $this->xmlin->handle_user_entry(); set_reportico_session_param("xmlintext",$this->xmlintext); $text = $this->panels["BODY"]->draw_smarty(); $this->panels["MAIN"]->smarty->assign('PARTIALMAINTAIN', get_request_item("partialMaintain", false )); $this->panels["MAIN"]->smarty->assign('CONTENT', $text); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS', $this->dynamic_grids); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SORTABLE', $this->dynamic_grids_sortable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_SEARCHABLE', $this->dynamic_grids_searchable); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGING', $this->dynamic_grids_paging); $this->panels["MAIN"]->smarty->assign('REPORTICO_DYNAMIC_GRIDS_PAGE_SIZE', $this->dynamic_grids_page_size); if ( $this->user_template ) $this->panels["MAIN"]->smarty->display($this->user_template.'_maintain.tpl'); else $this->panels["MAIN"]->smarty->display('maintain.tpl'); } else { $this->premaintain_query(); } break; case "XMLOUT": $this->handle_xml_query_input($mode); $this->xmlout = new reportico_xml_writer($this); $this->xmlout->prepare_xml_data(); if ( array_key_exists("xmlout", $_REQUEST) ) $this->xmlout->write_file($_REQUEST["xmlout"]); else $this->xmlout->write(); break; case "XMLSHOW": $this->handle_xml_query_input($mode); $this->xmlout = new reportico_xml_writer($this); $this->xmlout->prepare_xml_data(); $this->xmlout->write(); break; case "WSDLSHOW": $this->handle_xml_query_input($mode); $this->xmlout = new reportico_xml_writer($this); $this->xmlout->prepare_wsdl_data(); break; case "SOAPSAVE": $this->handle_xml_query_input($mode); $this->xmlout = new reportico_xml_writer($this); $this->xmlout->generate_web_service($this->xmloutfile); break; } $this->handled_initial_settings(); close_reportico_session(); }
function set_up_reportico_session() { // Get current session $session_name = session_id(); // Check for Posted Session Name and use that if specified if (isset($_REQUEST['reportico_session_name'])) { $session_name = $_REQUEST['reportico_session_name']; if (preg_match("/_/", $session_name)) { $ar = explode("_", $session_name); global $g_session_namespace; global $g_session_namespace_key; $g_session_namespace = $ar[1]; if ($g_session_namespace) { $g_session_namespace_key = "reportico_" . $g_session_namespace; } // Set session to join only if it is not NS meaning its called from framework and existing session // should be used if ($ar[0] != "NS") { $session_name = $ar[0]; } } } // If the session_name starts with NS_ then it is a namespace for reportico // embedded in a framework or for multiple concurrent reportico instances // , so set the current namespace. All sessiion variables for this namespace // will be stored in a namspaces specific session array if (strlen($session_name) >= 3 && substr($session_name, 0, 3) == "NS_") { if (!$session_name || !isset($_SESSION)) { session_start(); } global $g_session_namespace; global $g_session_namespace_key; $g_session_namespace = substr($session_name, 3); // IF NS_NEW passed then autogenerate session namespace from current time if ($g_session_namespace == "NEW") { $g_session_namespace = date("YmdHis"); } if ($g_session_namespace) { $g_session_namespace_key = "reportico_" . $g_session_namespace; } if (isset($_REQUEST['clear_session']) && isset($_SESSION)) { initialize_reportico_namespace(reportico_namespace()); } return; } // If no current session start one, or if request to clear session (it really means clear namespace) // then clear this out if (!$session_name || isset($_REQUEST['clear_session'])) { // If no session current then create a new one if (!$session_name || !isset($_SESSION)) { session_start(); } if (isset($_REQUEST['new_session']) && $_REQUEST['new_session']) { session_regenerate_id(false); } //unset_reportico_session_param("template"); //session_regenerate_id(false); $session_name = session_id(); if (isset($_REQUEST['clear_session'])) { initialize_reportico_namespace(reportico_namespace()); } } else { if (session_id() != $session_name) { session_id($session_name); session_start(); } $session_name = session_id(); } }