function display()
 {
     global $app_list_strings, $mod_strings, $current_language, $current_user, $dictionary;
     if ($GLOBALS['sugar_config']['KReports']['trace']) {
         global $db;
         $db->query("INSERT INTO kreportstats SET id='" . create_guid() . "', user_id='{$current_user->id}', report_id='" . $this->bean->id . "', date=now()");
     }
     // build the langiage strings
     $mod_lang = return_module_language($current_language, 'KReports');
     foreach ($mod_lang as $id => $value) {
         $returnArray[] = array('lblid' => $id, 'value' => $value);
     }
     // maretval: get parent Report information
     if (isset($_REQUEST['parentreportid']) && !empty($_REQUEST['parentreportid'])) {
         $parentReport = new KReport();
         $parentReport->retrieve($_REQUEST['parentreportid']);
         $parentReport_whereconditions = json_decode(html_entity_decode($parentReport->whereconditions));
     }
     // dynamic Select Options
     if (isset($_REQUEST['dynamicoptions'])) {
         $whereFieldsList = json_decode_kinamu(html_entity_decode($this->bean->whereconditions, ENT_QUOTES));
         $loadParams = json_decode(html_entity_decode(base64_decode($_REQUEST['dynamicoptions'])), true);
         foreach ($loadParams as $loadParam) {
             foreach ($whereFieldsList as $fieldIndex => $fieldData) {
                 if ($fieldData['usereditable'] != 'no' && (!empty($loadParam['reference']) && $loadParam['reference'] == $fieldData['reference'] || !empty($loadParam['fieldid']) && $loadParam['fieldid'] == $fieldData['fieldid'])) {
                     if (!empty($loadParam['operator'])) {
                         $whereFieldsList[$fieldIndex]['operator'] = $loadParam['operator'];
                     }
                     if (!empty($loadParam['value'])) {
                         $whereFieldsList[$fieldIndex]['value'] = $loadParam['value'];
                     }
                     if (!empty($loadParam['valuekey'])) {
                         $whereFieldsList[$fieldIndex]['valuekey'] = $loadParam['valuekey'];
                     }
                     if (!empty($loadParam['valueto'])) {
                         $whereFieldsList[$fieldIndex]['valueto'] = $loadParam['valueto'];
                     }
                     if (!empty($loadParam['valuetokey'])) {
                         $whereFieldsList[$fieldIndex]['valuetokey'] = $loadParam['valuetokey'];
                     }
                 }
             }
         }
         $this->bean->whereconditions = json_encode($whereFieldsList);
     }
     $editableWhereFields = $this->bean->get_runtime_wherefilters();
     $jsonWhereOptions = str_replace("\"", "'", json_encode_kinamu($editableWhereFields));
     if (count($editableWhereFields) > 0) {
         $this->ss->assign('dynamicoptions', $jsonWhereOptions);
     } else {
         $this->ss->assign('dynamicoptions', '');
     }
     // set the language Parameters
     $this->ss->assign('jsonlanguage', json_encode_kinamu($returnArray));
     // view Specifics
     //if ($this->bean->listtype != 'standard' & $this->bean->listtype != '') {
     $pluginManager = new KReportPluginManager();
     $thisPresentationManager = new KReportPresentationManager();
     $this->ss->assign('presentation', JSMin::minify($thisPresentationManager->renderPresentation($this->bean)));
     // get the Integration PPlugins
     $this->ss->assign('integrationpluginjs', JSMin::minify($pluginManager->getIntegrationPlugins($this->bean)));
     $thisVisualizationManager = new KReportVisualizationManager();
     //$this->ss->assign('visualization', JSMin::minify($thisVisualizationManager->renderVisualization(html_entity_decode($this->bean->visualization_params, ENT_QUOTES, 'UTF-8'), $this->bean)));
     $this->ss->assign('visualization', $thisVisualizationManager->renderVisualization(html_entity_decode($this->bean->visualization_params, ENT_QUOTES, 'UTF-8'), $this->bean));
     // set the view js
     //if ($this->bean->listtype == '')
     //    $this->bean->listtype = 'standard';
     //$this->ss->assign('viewJS', $this->setFormatVars() . '<script type="text/javascript" src="modules/KReports/views/view.detail.' . $this->bean->listtype . /* @ObfsProperty@ */ '.js" charset="utf-8"></script>');
     // override the options settings if the user is the admin
     $optionsJson = json_decode(html_entity_decode($this->bean->reportoptions));
     if ($current_user->is_admin) {
         $optionsJson->showTools = true;
         $optionsJson->showExport = true;
         $optionsJson->showSnapshots = true;
     }
     $this->ss->assign('reportoptions', json_encode($optionsJson));
     // build js variables
     require_once 'modules/ACL/ACLController.php';
     $jsVariables = '';
     //edit & delete
     // if (ACLController::checkAccess($this->bean->module_dir, 'edit', $this->bean->assigned_user_id == $current_user->id ? true : false)) {
     if ($this->bean->ACLAccess('edit')) {
         //if (ACLController::checkAccess($this->bean->module_dir, 'delete', $this->bean->assigned_user_id == $current_user->id ? true : false))
         if ($this->bean->ACLAccess('delete')) {
             $jsVariables .= "var accessLevel= 2;";
         } else {
             $jsVariables .= "var accessLevel= 1;";
         }
     } else {
         $jsVariables .= "var accessLevel= 0;";
     }
     // set the record id
     $jsVariables .= "var reportId='" . $this->bean->id . "';";
     // set if the Reporter is in DebugMode
     if ($GLOBALS['sugar_config']['KReports']['debug']) {
         $jsVariables .= "var kreportDebug=true;";
         $this->ss->assign('kreportDebug', true);
     } else {
         $jsVariables .= "var kreportDebug=false;";
         $this->ss->assign('kreportDebug', false);
     }
     // get all the where editable fields per operator
     include 'modules/KReports/config/KReportWhereOperators.php';
     $jsVariables .= "var kreportoperatorcount=" . json_encode($kreporterWhereOperatorCount) . ";";
     // add general format vars
     $jsVariables .= $this->setFormatVars();
     // 2013-03-18 add a config param for the Ext.AJAX timeout Bug #446
     if (!empty($GLOBALS['sugar_config']['KReports']['AJAXTimeout'])) {
         $jsVariables .= "Ext.Ajax.timeout = " . $GLOBALS['sugar_config']['KReports']['AJAXTimeout'] . ";";
     }
     $this->ss->assign('jsVariables', JSMin::minify($jsVariables));
     // process the view
     parent::display();
 }
 function action_update_visualization()
 {
     require_once 'modules/KReports/KReportVisualizationManager.php';
     $thisReport = new KReport();
     $thisReport->retrieve($_REQUEST['record']);
     $thisVisualizationmanager = new KReportVisualizationManager();
     echo $thisVisualizationmanager->updateVisualization(html_entity_decode($thisReport->visualization_params, ENT_QUOTES, 'UTF-8'), $thisReport, $_REQUEST['snapshotid'] != '' ? $_REQUEST['snapshotid'] : 0);
 }
 function display()
 {
     global $app_list_strings, $mod_strings, $current_language, $dictionary, $sugar_config;
     // ann Add Js Strinf that will be assigned at the end befor ehte view gets rendered
     $this->addJsString = '';
     $jsVariables = '';
     // get the Sugar Flavor
     $jsVariables .= "var sugar_flavor='" . $GLOBALS['sugar_flavor'] . "';";
     // get all the where editable fields per operator
     include 'modules/KReports/config/KReportWhereOperators.php';
     $jsVariables .= "var kreportoperatorcount=" . json_encode($kreporterWhereOperatorCount) . ";";
     $mod_lang = return_module_language($current_language, 'KReports');
     foreach ($mod_lang as $id => $value) {
         $returnArray[] = array('lblid' => $id, 'value' => $value);
     }
     // add the app list array we need
     if (is_array($this->bean->field_defs) && count($this->bean->field_defs) > 0) {
         foreach ($this->bean->field_defs as $fieldId => $fieldDetails) {
             if (isset($fieldDetails['options']) && isset($app_list_strings[$fieldDetails['options']])) {
                 $thisString = jarray_encode_kinamu($app_list_strings[$fieldDetails['options']]);
                 $returnArray[] = array('lblid' => $fieldId . '_options', 'value' => jarray_encode_kinamu($app_list_strings[$fieldDetails['options']]));
             }
         }
     }
     // set the language
     $langJson = json_encode_kinamu($returnArray);
     $this->ss->assign('jsonlanguage', json_encode_kinamu($returnArray));
     // see if we have a return id
     if (!isset($_REQUEST['return_id']) || $_REQUEST['return_id'] == '') {
         $_REQUEST['return_id'] = $this->bean->id;
     }
     // set Options
     if ($this->bean->reportoptions == '') {
         $this->bean->reportoptions = '{"resultsFolded":false,"optionsFolded":true,"authCheck":"full","showDeleted":false,"showExport":true,"showSnapshots":false,"showTools":true}';
     }
     // handle Plugins
     $pluginManager = new KReportPluginManager();
     $pluginManager->getEditViewPlugins($this);
     // handle authorization objects
     if (!empty($GLOBALS['KAuthAccessController'])) {
         if ($GLOBALS['KAuthAccessController']->orgManaged('KReport')) {
             $jsVariables .= "var korgmanaged=true;";
         } else {
             $jsVariables .= "var korgmanaged=false;";
         }
     }
     // manage Visualitazion Variables
     $thisVisualizationManager = new KReportVisualizationManager();
     $this->addJsString .= $thisVisualizationManager->getLayouts();
     // assign to the Template
     $this->ss->assign('editViewAddJs', $this->addJsString);
     //2013-03-15 pass in teh auth check type
     $jsVariables .= 'kreportAuthCheck=\'' . $sugar_config['KReports']['authCheck'] . '\';';
     // handle access authentication for Dialog
     global $sugar_config;
     switch ($sugar_config['KReports']['authCheck']) {
         case 'KAuthObjects':
             $this->ss->assign('authaccess_id', $this->bean->korgobjectmain);
             // get the name
             require_once 'modules/KOrgObjects/KOrgObject.php';
             $thisObject = new KOrgObject();
             $thisObject->retrieve($this->bean->korgobjectmain);
             $this->ss->assign('authaccess_name', $thisObject->name);
             break;
         case 'SecurityGroups':
             $thisRecord = $db->fetchByAssoc($db->query("SELECT securitygroups_records.id, name FROM securitygroups_records INNER JOIN securitygroups ON securitygroups.id = securitygroups_records.securitygroup_id WHERE securitygroups_records.record_id='" . $this->bean->id . "'"));
             if ($thisRecord) {
                 $this->ss->assign('authaccess_id', $thisRecord['id']);
                 $this->ss->assign('authaccess_name', $thisRecord['name']);
             }
             break;
         case 'PRO':
             if (!empty($this->bean->team_id)) {
                 $thisTeam = BeanFactory::getBean('Teams', $this->bean->team_id);
                 $this->ss->assign('team_name', $thisTeam->name . ' ' . $thisTeam->name_2);
             }
             break;
     }
     // set ambigious ariables
     $this->ss->assign('jsVariables', $jsVariables);
     // set if the Reporter is in DebugMode
     if ($GLOBALS['sugar_config']['KReports']['debug']) {
         $jsVariables .= "var kreportDebug=true;";
         $this->ss->assign('kreportDebug', true);
     } else {
         $jsVariables .= "var kreportDebug=false;";
         $this->ss->assign('kreportDebug', false);
     }
     if (!empty($this->bean->team_id)) {
         $thisTeam = BeanFactory::getBean('Teams', $this->bean->team_id);
         $this->ss->assign('team_name', $thisTeam->name . ' ' . $thisTeam->name_2);
     }
     // off we go
     parent::display();
 }