!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: nginx/1.24.0. PHP/7.3.32 

uname -a: Linux ip-172-31-28-255.ec2.internal 6.1.159-181.297.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC
Mon Dec 22 22:31:59 UTC 2025 x86_64
 

 

Safe-mode: OFF (not secure)

/www/wwwroot/itce.co.in/data/classes/   drwxr-xr-x
Free 30.74 GB of 49.93 GB (61.58%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     reportpage.php (42.58 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class ReportPage extends RunnerPage
{
    
    public 
$pagestart 0;
    
    public 
$arrReport = array();    
    
    
/**
     * Array of groups per page for report with group fields
     * @var array
     * @intellisense
     */    
    
public $arrGroupsPerPage = array();
    
    
/**
     * The flag indicating that report is cross-table
     */
    
public $crossTable false;
    
    
/**
     * Refresh the crosstab report
     */
    
public $crosstableRefresh false;
    
    
/**
     * @type Boolean
     */
    
protected $noRecordsFound false;
    
    protected 
$crossTableObj null;
    
    public 
$pdfJson false;
    
    public 
$x;
    public 
$y;
    public 
$dataField;
    public 
$operation;
    public 
$xType;
    public 
$yType;
    public 
$selectedAxis;
    
    
/**
     * @constructor
     * @param &Array params
     */
    
function __construct( &$params 
    {
        
parent::__construct($params);
        
        
$this->crossTable $this->pSet->isCrossTabReport();
        
        
$this->jsSettings['tableSettings'][ $this->tName ]['crossTable'] = $this->crossTable;
        
$this->jsSettings['tableSettings'][ $this->tName ]['simpleSearchActive'] = $this->searchClauseObj->simpleSearchActive;
        
        if( 
$this->mode == REPORT_DASHBOARD || $this->mode == REPORT_DETAILS || $this->mode == REPORT_DASHDETAILS )
        {
            if( 
$this->mode != REPORT_DETAILS )
            {
                
$this->formBricks["header"] = array( 
                    array( 
"name" => "details_found""align" => "right" )
                );
            }
            
$this->formBricks["footer"] = array( "pagination_block" );    
        }

        
$this->controlsMap["pdfSettings"] = array();
        
$this->controlsMap["pdfSettings"]["allPagesMode"] = 0;
    }

    
/**
     * Set the page's session prefix
     */
    
protected function assignSessionPrefix()
    {
        if( 
$this->mode == REPORT_DASHBOARD )
            
$this->sessionPrefix $this->dashTName."_".$this->tName;
        else
            
$this->sessionPrefix $this->tName;
    }    
    
    
/**
     * Set session variables
     */
    
public function setSessionVariables()
    {
        
parent::setSessionVariables();
        
        
$_SESSION[$this->sessionPrefix.'_advsearch'] = serialize($this->searchClauseObj);
        
        if( !
$_SESSION[$this->sessionPrefix."_pagesize"] )
            
$_SESSION[$this->sessionPrefix."_pagesize"] = $this->pSet->getInitialPageSize();
        
        
$this->pageSize $_SESSION[$this->sessionPrefix."_pagesize"];
        
        if( !
$_SESSION$this->sessionPrefix."_pagenumber" ] )
            
$_SESSION$this->sessionPrefix."_pagenumber" ] = 1;
        
        if( isset(
$_REQUEST["goto"]) )
            
$_SESSION$this->sessionPrefix."_pagenumber" ] = intval($_REQUEST["goto"]);
        
        
$this->myPage $_SESSION[$this->sessionPrefix."_pagenumber"];
        
        
$this->pagestart = ($this->myPage 1) * $this->pageSize;
    }

    
/**
     * Build the activated Search panel
     */
    
public function buildSearchPanel()
    {
        if( 
$this->mode == REPORT_DASHBOARD )
            return;
        
        
parent::buildSearchPanel();
    }
    
    
/**
     * Process the page 
     */
    
public function process()
    {
        if( 
$this->mode == REPORT_DASHDETAILS 
            
|| $this->mode == REPORT_DETAILS && ( $this->masterPageType == PAGE_LIST || $this->masterPageType == PAGE_REPORT ))
            
$this->updateDetailsTabTitles();

        if( 
$this->crossTable && !$this->checkCrossParams() )
        {
            if( 
$this->mode == REPORT_SIMPLE )
            {
                
$this->crossTableBaseRedirect();
                return;
            }
            
            
$this->setDefaultParams();
        }
        
        
//    Before Process event
        
if( $this->eventsObject->exists("BeforeProcessReport") )
            
$this->eventsObject->BeforeProcessReport$this );

        
$this->setDetailsBadgeStyles();
        
// array with extra report params
        
$extraParams $this->getExtraReportParams();

        
$this->setGoogleMapsParams$extraParams['fieldsArr'] );
        if( 
$this->googleMapCfg['isUseGoogleMap'] ) 
            
$this->initGmaps();

        
$this->buildSearchPanel();

        
// build tabs and set current
        
$this->processGridTabs();    
            
        
$this->setReportData$extraParams );    

        
$this->addCommonJs();
        
$this->addButtonHandlers();
        
$this->commonAssign();
        
$this->doCommonAssignments();    
        
$this->addCustomCss();
            
        
// display the 'Back to Master' link and master table info
        
if( $this->mode == REPORT_SIMPLE 
            
$this->displayMasterTableInfo();    
        
        
$this->showPage();    
    }
    
    
/**
     * @return Boolean
     */
    
protected function checkCrossParams()
    {
        if( !
$this->crossTable )
            return 
true;
        
        return 
strlen$this->) && strlen$this->) && strlen$this->dataField );
    }
    
    
/**
     *
     */
    
protected function setDefaultParams()
    {
        
$prms $this->getDefaultCrossParams();
        
        
$this->$prms["x"];
        
$this->$prms["y"];
        
$this->dataField $prms["data"];
        
$this->operation $prms["op"];
    }
    
    
/**
     * Fix it!
     * @return Array
     */
    
protected function getDefaultCrossParams()
    {
        if( !
$this->crossTable )
            return array();
            
        
$xNames = array();
        
$yNames = array();
        
$allNames = array();
        foreach( 
$this->pSet->getReportGroupFieldsData() as $ind => $value )
        {
            
$axisName $value["strGroupField"];
        
            if( 
$value["crossTabAxis"] == )
                
$xNames[] = $axisName;
            elseif( 
$value["crossTabAxis"] == )
                
$yNames[] = $axisName;
            else
                
$allNames[]= $axisName;    
        }

        if( 
count$xNames ) > )
            
$x $xNames[0];
        else
            
$x $allNames[0];
    
        if( 
count($yNames) > )
            
$y $yNames[0];
        else 
        {
            if( !
count$xNames ) )
                
$y $allNames[1];
            else
                
$y $allNames[0];
        }
        
        
$dataField "";
        
$operation "";
        
$reportFields $this->pSet->getFieldsList();
        foreach( 
$reportFields as $field )
        {            
            
$operation "";
            if( 
$this->pSet->getFieldData($field'isTotalMax') )
                
$operation "max";
            else if( 
$this->pSet->getFieldData($field'isTotalMin') )
                
$operation "min";
            else if( 
$this->pSet->getFieldData($field'isTotalAvg') )
                
$operation "avg";
            else if( 
$this->pSet->getFieldData($field'isTotalSum') )
                
$operation "sum";                
                    
            if( 
$operation )
            {            
                
$dataField $field;
                break;
            }
        }    
        
        return array( 
"x" => $x"y" => $y"data" => $dataField"op" => $operation );
    }
    
    
/**
     * @return Array
     */
    
protected function getCurrentCrossParams()
    {
        
$prms = array( "x" => $this->x"y" => $this->y"data" => $this->dataField"op" => $this->operation );
        
        if( 
$this->xType )
            
$prms["xtype"] = $this->xType;
            
        if( 
$this->yType )
            
$prms["ytype"] = $this->yType;
            
        return 
$prms;    
    }
    
    
/**
     * @return String
     */
    
protected function getDefaultCrossParamsString()
    {
        
$prms $this->getDefaultCrossParams();
        return 
"x=".$prms["x"]."&y=".$prms["y"]."&data=".$prms["data"]."&op=".$prms["op"];
    }
    
    
/**
     *
     */
    
protected function crossTableBaseRedirect() 
    {
        
HeaderRedirect$this->pSet->getShortTableName(), $this->getPageType(), 
            
implode'&', array( $this->getDefaultCrossParamsString(), $this->getStateUrlParams() ) ) );
        exit();
    }
    
    
/**
     * Get the report data, assign corresponding xt variables 
     * @param Array options
     */
    
public function setReportData$options )
    {
        if( 
$this->crossTable )
            
$this->setCrosstabData$options );
        else 
            
$this->setStandartData$options );
    }
    
    
/**
     *
     */
    
protected function getCrossGroupFieldsSettings$repGroupFields )
    {
        
$groupFields = array();
        
        
$xNames = array();
        
$yNames = array();
        
        
$xFieldsCount = array();
        
$yFieldsCount = array();
        
        foreach( 
$repGroupFields as $ind => $value )
        {
            if( 
$value["crossTabAxis"] == || $value["crossTabAxis"] == )
                ++
$xFieldsCount$value["strGroupField"] ];
            if( 
$value["crossTabAxis"] == || $value["crossTabAxis"] == )
                ++
$yFieldsCount$value["strGroupField"] ];
        }
        
        foreach( 
$repGroupFields as $ind => $value )
        {
            
$groupFields$ind ]["name"] = $value["strGroupField"];
            
            
$xAxis = ($value["crossTabAxis"] == || $value["crossTabAxis"] == 2);
            
$yAxis = ($value["crossTabAxis"] == || $value["crossTabAxis"] == 2);
            
            if( 
== $value["groupInterval"] ||
                
$xAxis && $xFieldsCount$value["strGroupField"] ] < ||
                
$yAxis && $yFieldsCount$value["strGroupField"] ] < )
            {
                
$groupFields$ind ]["label"] = $this->pSet->label$value["strGroupField"] );
            }
            else
            {
                
$groupFields$ind ]["label"] = $this->pSet->label$value["strGroupField"] ) . " - " CrossTableReport::getCrossIntervalName$this->pSet->getFieldType$value["strGroupField"] ), $value["groupInterval"] );
                
            }
            
            
$groupFields$ind ]["uniqueName"] = true;
            
$groupFields$ind ]["int_type"] = $value["groupInterval"];
            
            if( !
$xNames$value["strGroupField"] ] )
                
$xNames$value["strGroupField"] ] = array();    
            
            if( !
$yNames$value["strGroupField"] ] )
                
$yNames$value["strGroupField"] ] = array();            
            
            if( 
$value["crossTabAxis"] == )
            {
                
$groupFields$ind ]["group_type"] = "x";    
                
$xNames$value["strGroupField"] ][] = $ind;
            }
            elseif( 
$value["crossTabAxis"] == )
            {
                
$groupFields$ind ]["group_type"] = "y";            
                
$yNames$value["strGroupField"] ][] = $ind;
            }
            else
            {
                
$groupFields$ind ]["group_type"] = "all";            
                
$xNames$value["strGroupField"] ][] = $ind;            
                
$yNames$value["strGroupField"] ][] = $ind;
            }
        }
    
    
        foreach( 
$xNames as $fName => $indices )
        {
            if( 
count$indices ) > 
            {
                foreach( 
$indices as $ind )
                {
                    
$groupFields$ind ]["uniqueName"] = false;
                }
            }
        }
    
    
        foreach( 
$yNames as $fName => $indices )
        {
            if( 
count$indices ) > 
            {
                foreach( 
$indices as $ind )
                {
                    
$groupFields$ind ]["uniqueName"] = false;
                }
            }
        }
    
        return 
$groupFields;
    }
    
    
/**
     * Get data for crosstab and assign with xt
     * @param &Array _options     
     */
    
public function setCrosstabData( &$_options )
    {
        if( 
$this->pSetSearch->noRecordsOnFirstPage() && !$this->isSearchFunctionalityActivated() )
        {
            
$this->xt->assign("container_grid"false);
            
$this->showNoRecordsMessage();        
        }
        
        include_once( 
getabspath("classes/crosstable_report.php") );
        
        
$params = array();
        
        
$params["selectedAxis"] = $this->selectedAxis;
        
$params["x"] = $this->x;
        
$params["y"] = $this->y;
        
$params["data"] = $this->dataField;
        
$params["xType"] = $this->xType;
        
$params["yType"] = $this->yType;
        
$params["operation"] = $this->operation;

        
$params["headerClass"] = $this->getFieldClass$this->);
        
$params["dataClass"] = $this->getFieldClass$this->dataField );
        
        
$params["tableName"] = $this->tName;
        
$params["pageType"] = $this->pageType;

        
$params["groupFields"] = $this->getCrossGroupFieldsSettings$_options["repGroupFields"] );
        
        
$params["xSummary"] = $this->pSet->reportHasHorizontalSummary();
        
$params["ySummary"] = $this->pSet->reportHasVerticalSummary();
        
$params["totalSummary"] = $params["xSummary"] || $params["ySummary"];
        
        
        foreach( 
$_options["fieldsArr"] as $ind => $value )
        {
            
$params["totals"][ $value["name"] ]["name"] = $value["name"];
            
$params["totals"][ $value["name"] ]["label"] = $value["label"];
            
            
$params["totals"][ $value["name"] ]["max"] = $value["totalMax"];
            
$params["totals"][ $value["name"] ]["min"] = $value["totalMin"];
            
$params["totals"][ $value["name"] ]["sum"] = $value["totalSum"];
            
$params["totals"][ $value["name"] ]["avg"] = $value["totalAvg"];
        }
        
        if( 
$this->pdfJsonMode() )
            
$params["pdfJSON"] = true;        
        
        
$this->crossTableObj = new CrossTableReport$params$this );
        
        if( 
$this->crosstableRefresh )
        {
            
$this->refreshCrossTable();
            return;
        }
        
        if( 
$this->crossTableObj->isEmpty() ) 
        {
            
$this->noRecordsFound true;
            
$this->jsSettings["tableSettings"][ $this->tName ]["crossParams"] = $this->getCurrentCrossParams();
        }
        
        
$this->crossTableCommonAssign$params["totalSummary"] );
    }
    
    
/**
     *
     */
    
protected function refreshCrossTable()
    {
        
$reportData = array();
        
        
$reportData["rowsInfo"] = $this->crossTableObj->getCrossTableData();
        
$reportData["totalsName"] = $this->crossTableObj->getTotalsName();
        
$reportData["columnSummary"] = $this->crossTableObj->getCrossTableSummary();
        
$reportData["totalSummary"] = $this->crossTableObj->getTotalSummary();
        
        
$reportData["groupFuncCtrl"] = $this->getOperationCtrlMarkup();
        
$reportData["dataClass"] = $this->getFieldClass$this->dataField );

        echo 
printJSON$reportData );
        exit();            
    }
    
    
/**
     * @param String axis
     * @return String
     */
    
protected function getCrossFieldCtrlMarkup$axis )
    {
        
$classAttr "";
        if( 
$this->isBootstrap() )
            
$classAttr "form-control bs-cross-dd".$axis;
        
        
$options = array();
        
$lastLabel "";
        foreach( 
$this->crossTableObj->getCrossFieldsData$axis ) as $fData )
        {
            
$intervalDataAttr $fData["intervalType"] ? " data-".$axis."type=\""$fData["intervalType"] ."\" " "";    
            
$lastLabel $fData["label"];
            
$options[] = "<option "$intervalDataAttr ." value=\"".$fData["value"]."\" ".$fData["selected"].">".$lastLabel."</option>";            
        }

        
$hiddenAttr "";
        
$labelTag "";
        if ( 
count($options) < )
        {
            
$labelTag "<span class=\"" $classAttr " like-text\">"$lastLabel ."</span>";
            
$hiddenAttr "style=\"display: none;\"";
        }        

        return 
"<select ".$hiddenAttr." id=\"select_group_" $axis $this->id."\" class=\"" $classAttr "\">"implode(""$options) ."</select>" $labelTag ;
    }    
    
    
/**
     * @return String
     */
    
protected function getDataFieldCtrlMarkup()
    {
        
$classAttr "";
        if( 
$this->isBootstrap() )
            
$classAttr "form-control bs-cross-ddvalue";
        
        
$options = array();
        
$lastLabel "";
        foreach( 
$this->crossTableObj->getDataFieldsList() as $fData )
        {
            
$lastLabel runner_htmlspecialchars$fData["label"] );
            
$options[] = "<option value=\""$fData["value"] ."\" "$fData["selected"] .">"$lastLabel ."</option>";            
        }

        
$hiddenAttr "";
        
$labelTag "";
        if ( 
count($options) < )
        {
            
$labelTag "<span class=\"" $classAttr " like-text\">"$lastLabel ."</span>";
            
$hiddenAttr "style=\"display: none;\"";
        }

        return 
"<select ".$hiddenAttr." id=\"select_data".$this->id."\" class=\"" $classAttr "\">"implode(""$options) ."</select>" $labelTag;
        
        
    }
    
    
/**
     * @return String
     */    
    
protected function getOldOperationCtrlMarkup()
    {
        
$inputCtrls = array();
        foreach( 
$this->crossTableObj->getCurrentOperationList() as $opData 
        {
            
$cheked $opData["selected"] == "selected" "checked" "";
            
$inputCtrls[] = "<input type=radio value='".$opData["value"]."' name=\"group_func".$this->id."\" ".$cheked."> ".$opData["label"];
        }

        return 
implode"&nbsp;&nbsp;"$inputCtrls );
    }
    
    
/**
     * @return String
     */
    
protected function getOperationCtrlMarkup()
    {
        if( !
$this->isBootstrap() )
            return 
$this->getOldOperationCtrlMarkup();

        
$options = array();
        
$lastLabel "";
        foreach( 
$this->crossTableObj->getCurrentOperationList() as $opData )
        {
            
$lastLabel runner_htmlspecialchars$opData["label"] );
            
$options[] = "<option value=\""$opData["value"] ."\" "$opData["selected"] .">"$lastLabel ."</option>";            
        }

        if ( 
count($options) < )
            return  
"<span id=\"group_func"$this->id."\" class=\"bs-cross-ddgroup form-control like-text\">"$lastLabel ."</span>";
        
        return 
"<select id=\"group_func"$this->id ."\" class=\"bs-cross-ddgroup form-control\">"implode(""$options) ."</select>";
    }
    
    
/**
     * Assign values obtained from crossTable object to
     * the basic cross table xt variables
     * @param Boolean showSummary
     */
    
protected function crossTableCommonAssign$showSummary )
    {
        if( !
$this->mobileTemplateMode() ) 
        {
            
$this->xt->assign"cross_controls"true );    
            
            
$this->xt->assign"select_group_x"$this->getCrossFieldCtrlMarkup("x") );
            
$this->xt->assign"select_group_y"$this->getCrossFieldCtrlMarkup("y") );
            
$this->xt->assign("select_data"$this->getDataFieldCtrlMarkup() );
            
$this->xt->assign$this->isBootstrap() ? "select_group" "group_func"$this->getOperationCtrlMarkup() );
        }
        
        
$this->xt->assign"totals"$this->crossTableObj->getTotalsName() );        
        
        
$grid_row["data"] = $this->crossTableObj->getCrossTableData();        
    
        
$allow_export true;
        
$this->xt->assign"export_link"$allow_export && !$this->noRecordsFound );
        
        
$this->xt->assign"prints_block"$this->printAvailable() && !$this->noRecordsFound );
        
        if ( !
$this->isDashboardElement() )            
            
$this->xt->assign("print_friendly"$this->printAvailable() && !$this->noRecordsFound );
        

        if( !
$this->noRecordsFound )
        {
            
$this->xt->assign("grid_row"$grid_row);
            
$headers $this->crossTableObj->getCrossTableHeader();
            
$this->xt->assignbyref("group_header"$headers );
            
$this->xt->assignbyref("col_summary"$this->crossTableObj->getCrossTableSummary());    
            
$this->xt->assignbyref("total_summary"$this->crossTableObj->getTotalSummary());
            
$this->xt->assignbyref("summary_class"$this->getFieldClass$this->dataField ));
            
$this->xt->assign("cross_totals"$showSummary);
            
            
$headerColspan count$grid_row["data"][0]["row_record"]["data"] );
            
            if( 
$grid_row["data"][0]["row_record"]["cross_totals"] )
                ++
$headerColspan;
                
            if( 
$headerColspan )
                
$this->xt->assign"xselcell_attrs""colspan=".$headerColspan );
        }
        
        
$this->xt->assign"grid_header", !$this->noRecordsFound );
        
        
//$this->xt->assign("crosstable_attrs", "&x=".$this->x."&y=".$this->y."&data=".$this->dataField."&op=".$this->operation);
    
}    
    
    
    
/**
     * Get data for standart report and assign with xt
     * @param &Array _options     
     */
    
public function setStandartData(&$_options)
    {        
        include_once(
getabspath('classes/reportlib.php'));
        
        
//$sqlArray = $this->getReportSQLData();
        
$pageSize $this->pageSize;
        if ( 
$this->pageSize == -) {
            
$pageSize 0;
        }
        
        
$rb = new Report$this->pSet->getOrderIndexes(), $this->connection$pageSize0$_options$this ); 
            
        
$this->arrReport $rb->getReport$this->pagestart );

        
$this->setRecordsId();
        
$this->setDetailLinks();
        
        
$this->buildPagination();
        
        
$this->standardReportCommonAssign();
        
$this->assignColumnHeaderClasses();
    }

    
/**
     * Get where clause for an active master-detail relationship
     * @return string
     */
    
public function getMasterTableSQLClause() 
    {
        if( 
$this->mode == REPORT_DASHBOARD && !isset($this->dashElementData["masterTable"]) )
            return 
"";        
        return 
parent::getMasterTableSQLClause(); 
    }
    
    
/**
     * Assign the basic cross table xt variables
     */
    
protected function standardReportCommonAssign()
    {
        
$this->xt->assign(GoodFieldName($this->tName)."_dtable_column"true); //fix it!
        
$this->xt->assign("dtables_link"true);
            
        foreach(
$this->arrReport['page'] as $key => $value)
        {
            
$this->xt->assign($key$value);
        }
        
        foreach(
$this->arrReport['global'] as $key => $value)
        {
            
$this->xt->assign($key$value);
        }            
        
        if( 
count($this->arrReport['list']) > )
            
$this->xt->assign('grid_row', array('data' => $this->arrReport['list']));
        else
            
$this->noRecordsFound true;
        
        
$allow_export true;
        
$allow_search true;
        
$this->xt->assign("export_link"$allow_export && $this->arrReport['countRows'] > 0);
        
$this->xt->assign("prints_block"$allow_export && $this->arrReport['countRows'] > 0);        
        
$this->xt->assign("printall_link"$allow_export && $this->arrReport['countRows'] > $this->pageSize && $this->pageSize 0);
        
$this->xt->assign("print_recspp"$this->pSet->getReportPrintGroupsPerPage() );

        if ( !
$this->isDashboardElement() )
        {            
            
$this->xt->assign("print_friendly"$this->printAvailable() && $this->arrReport['countRows'] > );
            
$this->xt->assign("print_friendly_all"$this->printAvailable() && $this->arrReport['countRows'] > 0);
        }

        if( 
$this->mode == REPORT_SIMPLE && $allow_search && count($this->arrGroupsPerPage) )
        {
            
$this->xt->assign("recordspp_block"true);
            
$this->createPerPage();
        }

        if ( 
$this->isBootstrap() )
        {
            
$this->xt->assign("details_found"$this->arrReport['countRows'] != 0);
            
            if( 
$this->isPD() && $this->noRecordsFound )
            {
                
$this->hideItem("details_found");
                
$this->hideItem("page_size");
            }            
        }
        
        
$this->xt->assign("details_block"$this->arrReport['countRows'] != 0);
        
$this->xt->assign("records_found"$this->arrReport['countRows']);
        
$this->xt->assign("pages_block"$this->arrReport['countRows'] != 0);
        
$this->xt->assign("page"$this->myPage);
        
$this->xt->assign("maxpages"$this->maxPages);

        
        
$this->xt->assign"global_summary", !$this->noRecordsFound );
        
$this->xt->assign"page_summary", !$this->noRecordsFound );
        
$this->xt->assign"summary_header", !$this->noRecordsFound );

        
// tabular report
        
$this->xt->assign"grid_header", !$this->noRecordsFound );
    }
    
    
/**
     * Assign pagination_block, pagination xt variables
     */
    
public function buildPagination()
    {
        
//    prepare for create pagination
        
$this->maxPages $this->arrReport['maxpages'];

        
$lastrecord $this->myPage $this->pageSize;
        if( 
$this->pageSize || $lastrecord $this->arrReport['countRows'] )
            
$lastrecord $this->arrReport['countRows'];
        
        
$this->prepareRecordsIndicator( ( $this->myPage ) * $this->pageSize 1$lastrecord$this->arrReport['countRows'] );

        
$advSeparator "&nbsp;:&nbsp;";
        
$separator "&nbsp;";
        if( 
$this->isBootstrap() )
        {
            
$separator "";
            
$advSeparator "";
        }
        
        if(
$this->maxPages 1)
        {        
            
$this->xt->assign("pagination_block"true);
            
$pagination '';
            
$limit 10;
            if( 
$this->mobileTemplateMode() )    
                
$limit 5;

            
$counterstart $this->myPage - ($limit 1);
            if(
$this->myPage $limit != 0)
                
$counterstart $this->myPage -($this->myPage $limit) + 1;
            
            
$counterend $counterstart + ($limit 1);
            if(
$counterend $this->maxPages)
                
$counterend $this->maxPages;
            
            if(
$counterstart != 1
            {
                
$pagination.= $this->getPaginationLink(1"First").$advSeparator;
                
$pagination.= $this->getPaginationLink($counterstart 1"Previous").$separator;
            }
            
            
$pageLinks "";    
            if(
isRTL())
            {
                for(
$counter $counterend$counter >= $counterstart$counter --) 
                {
                    
$pageLinks.= $separator $this->getPaginationLink$counter$counter$counter == $this->myPage );
                }
            }
            else
            {
                for(
$counter $counterstart$counter <= $counterend$counter ++) 
                {
                    
$pageLinks .= $separator $this->getPaginationLink$counter$counter$counter == $this->myPage );
                }
            }

            if( !
$this->isBootstrap() )
            {
                
$pageLinks "[" $pageLinks $separator "]";
            }
            
            
$pagination.= $pageLinks;

            if(
$counterend != $this->maxPages
            {
                
$pagination.= $separator $this->getPaginationLink($counterend 1"Next") . $advSeparator;
                
$pagination.= $separator $this->getPaginationLink($this->maxPages"Last");
            }            
            if( 
$this->isBootstrap() )
                
$pagination '<nav><ul class="pagination" data-function="pagination' $this->id '">' $pagination '</ul></nav>';
            else
                
$pagination "<div data-function=\"pagination" $this->id "\">" $pagination "</div>";
            
            
$this->xt->assign("pagination"$pagination);
        }
        else if( !
$this->myPage )
        {
            
$this->myPage 1//temporary fix
        
}
    }
    
    protected function 
setRecordsId() {
        
$recCount count$this->arrReport['list'] );
        for( 
$i 0$i $recCount; ++$i ) {
            
$this->genId();
            
$this->arrReport['list'][$i]["recId"] = $this->recId;
        }
    }

    
/**
     * fix it!
     */
    
protected function setDetailLinks()
    {
        if( 
$this->mode == REPORT_DASHBOARD )
            return;
            
        
// set detail links     
        
foreach( $this->allDetailsTablesArr as $detailTableData )
        {
            
// get perm for det tables
            
$this->permis$detailTableData['dDataSourceTable'] ] = $this->getPermissions$detailTableData['dDataSourceTable'] );
            
// field names of detail keys of passed detail table, when current is master
            
$this->detailKeysByD[] = $this->pSet->getDetailKeysByDetailTable$detailTableData['dDataSourceTable'] );            
        }
        
        
$this->controlsMap['gridRows'] = array();
        
$arrReportList = array();
        foreach (
$this->arrReport['list'] as $key => $data
        {
            if (!isset(
$data['row_data']))
                continue;
            
$record = array();
            
//$this->genId();
            
$recId $data["recId"];
            
            
$gridRowInd count($this->controlsMap['gridRows']);
            
$this->controlsMap['gridRows'][$gridRowInd] = array();
            
$this->controlsMap['gridRows'][$gridRowInd]['id'] = $recId;
            
$this->controlsMap['gridRows'][$gridRowInd]['rowInd'] = $gridRowInd;
            
//Add the connection with containing row. It's important for vertical layout's multiple records per row mode
            
$this->controlsMap['gridRows'][$gridRowInd]['keyFields'] = array();
            
$this->controlsMap['gridRows'][$gridRowInd]['keys'] = array();
            for(
$i 0$i count($tKeys); $i ++) {
                
$this->controlsMap['gridRows'][$gridRowInd]['keyFields'][$i] = $tKeys[$i];
                
$this->controlsMap['gridRows'][$gridRowInd]['keys'][$i] = $data[$tKeys[$i].'_value'];
            }
            
            
$this->proccessDetailGridInfo($record$data$gridRowInd);
            
$record["recordattrs"] = "data-record-id=\"".$recId."\"";
            
//$record["recId"] = $recId;
            
$record["rowattrs"] = " id=\"gridRow".$recId."\"";
            
$arrReportList[$key] = array_merge_assoc($data$record);
            
$this->recIds[] = $recId;
        }
        
        foreach(
$arrReportList as $key => $data)
        {
            
$this->arrReport['list'][$key] = $data;
        }        
        
// end set detail links        
    
}

    protected function 
getSubsetSQLComponents()
    {
        
$sql parent::getSubsetSQLComponents();

        
$sql["mandatoryWhere"][] = $this->SecuritySQL"Search" );

        
    
// hide data until search
        
if( $this->pSet->noRecordsOnFirstPage() && !$this->searchClauseObj->isSearchFunctionalityActivated() )
            
$sql["mandatoryWhere"][] = " 1=0 ";
        return 
$sql;
    }
    
    
/**
     * Get SQL query data for the Report constructor
     * @return Array
     */
    
public function getReportSQLData()
    {
        
$sql $this->getSubsetSQLComponents();
        
//    do DB::PrepareSQL for all SQL parts
        
        
$sql["sqlParts"]["head"] = DB::PrepareSQL$sql["sqlParts"]["head"] );
        
$sql["sqlParts"]["from"] = DB::PrepareSQL$sql["sqlParts"]["from"] );
        
$sql["sqlParts"]["where"] = DB::PrepareSQL$sql["sqlParts"]["where"] );
        
$sql["sqlParts"]["groupby"] = DB::PrepareSQL$sql["sqlParts"]["groupby"] );
        
$sql["sqlParts"]["having"] = DB::PrepareSQL$sql["sqlParts"]["having"] );
        
        
// combine all where clauses into a single expression
        
        
$optWhere SQLQuery::combineCases$sql["optionalWhere"], "or" );
        
$optHaving SQLQuery::combineCases$sql["optionalHaving"], "or" );
        
        
$allWhere SQLQuery::combineCases
                array( 
SQLQuery::combineCases$sql["mandatoryWhere"], "and" ), 
                
$sql["sqlParts"]["where"], 
                
$optWhere ), 
            
"and" );

        
$allHaving SQLQuery::combineCases
                array( 
SQLQuery::combineCases$sql["mandatoryHaving"], "and" ), 
                
$sql["sqlParts"]["having"], 
                
$optHaving ), 
            
"and" );
        
        return array(
$sql["sqlParts"]["head"], $sql["sqlParts"]["from"], $allWhere$sql["sqlParts"]["groupby"], $allHaving);
    }
    
    
    
/**
     * Prepare detail for edit and view
     */
    
public function prepareDetailsForEditViewPage() 
    {        
        
$this->addButtonHandlers();
        
$this->commonAssign();

        if( 
$this->allDetailsTablesArr )
        {
            
$this->AddCSSFile("include/jquery-ui/smoothness/jquery-ui.min.css");
            
$this->AddCSSFile("include/jquery-ui/smoothness/jquery-ui.theme.min.css");
        }
        
        
        
$this->setReportData$this->getExtraReportParams() );
        
$this->xt->assign("cross_controls"false);

        
        
$this->xt->assign("grid_block"true);
        
$this->xt->assign("recordspp_block"true);

        
$this->doCommonAssignments();    
        
        
$this->createPerPage();
        
        
$this->xt->assign("id"$this->id);
        
        
$this->body["begin"] = '';
        
$this->body["end"] = '';
        
$this->xt->assign("body"$this->body);    
    }
    
    
/**
     * @return Array
     */
    
public function getExtraReportParams()
    {
        
$extraParams = array();
        
        if( !
$this->crossTable )
        {
            
$extraParams['tName'] = $this->tName;
            
$extraParams['shortTName'] = $this->shortTableName;
            
$extraParams['sessionPrefix'] = $this->sessionPrefix;
            
$extraParams['shortTableName'] = $this->shortTableName;            
            
            
$extraParams['tKeyFields'] = $this->pSet->getTableKeys();
            
$extraParams['repPageSummary'] = $this->pSet->reportHasPageSummary();
            
$extraParams['repGlobalSummary'] = $this->pSet->reportHasGlobalSummary();
            
$extraParams['repLayout'] = $this->pSet->getReportLayout();
            
$extraParams['showGroupSummaryCount'] = $this->pSet->isGroupSummaryCountShown();
            
$extraParams['repShowDet'] = $this->pSet->reportDetailsShown();
            
// if any field used for totals
            
$extraParams['isExistTotalFields'] = $this->pSet->reportTotalFieldsExist();
        }
        
        
// report field info
        
$extraParams['repGroupFields'] = $this->pSet->getReportGroupFieldsData();
        
$extraParams['repGroupFieldsCount'] = count$extraParams['repGroupFields'] );        
        
        
$paramfieldArr = array();
        
$reportFields $this->pSet->getFieldsList();
        foreach( 
$reportFields as $field )
        {
            
$fieldArr = array();
            
$fieldArr['name'] = $field;
            
//'fName' added for maps
            
$fieldArr['fName'] = $field;
            
$fieldArr['label'] = $this->pSet->label$field );
            
$fieldArr['goodName'] = GoodFieldName$field );
            
$fieldArr['repPage'] = true//"@f.bReportPage"; 
            
$fieldArr['viewFormat'] = $this->pSet->getViewFormat$field );
            
$fieldArr['editFormat'] = $this->pSet->getEditFormat$field );
        
            
$fieldArr['totalMax'] = $this->pSet->getFieldData($field'isTotalMax');
            
$fieldArr['totalMin'] = $this->pSet->getFieldData($field'isTotalMin');
            
$fieldArr['totalAvg'] = $this->pSet->getFieldData($field'isTotalAvg');
            
$fieldArr['totalSum'] = $this->pSet->getFieldData($field'isTotalSum');                            
            
$paramfieldArr[] = $fieldArr;        
        }
        
        
$extraParams['fieldsArr'] = $paramfieldArr;
        
        return 
$extraParams;
    }
    
    
/**
     * Assign recsPerPage, recsPerPage xt variables
     */
    
public function createPerPage()
    {
        
$classString "";
        
$allMessage "Show all";
        if( 
$this->isBootstrap() )
        {
            
$classString 'class="form-control"';
            
$allMessage "All";
        }
        
        
$rpp "<select ".$classString." id=\"recordspp".$this->id."\">";
        
        
// use group fields on report page or not
        
$reportGroupFields $this->pSet->isReportWithGroups();
        
        if( 
$reportGroupFields )
        {            
            for(
$i 0$i count($this->arrGroupsPerPage); $i++)
            {            
                if( 
$this->arrGroupsPerPage[$i] != -)
                    
$rpp.= "<option value=\"".$this->arrGroupsPerPage[$i]."\" ".($this->pageSize == $this->arrGroupsPerPage[$i] ? "selected" "").">".$this->arrGroupsPerPage[$i]."</option>";
                else    
                    
$rpp.= "<option value=\"-1\" ".($this->pageSize == $this->arrGroupsPerPage[$i] ? "selected" "").">".$allMessage."</option>";
            }    
        }    
        else
        {        
            for(
$i 0$i count($this->arrRecsPerPage); $i++)
            {
                if( 
$this->arrRecsPerPage[$i] != -)
                    
$rpp.= "<option value=\"".$this->arrRecsPerPage[$i]."\" ".($this->pageSize == $this->arrRecsPerPage[$i] ? "selected" "").">".$this->arrRecsPerPage[$i]."</option>";
                else
                    
$rpp.= "<option value=\"-1\" ".($this->pageSize == $this->arrRecsPerPage[$i] ? "selected" "").">".$allMessage."</option>";
            }
        }
        
        
$rpp.= "</select>";
        
        if( 
$reportGroupFields || $this->isPD() )
            
$this->xt->assign("grpsPerPage"$rpp);
        else
            
$this->xt->assign("recsPerPage"$rpp);
    }

    
/**
     *
     */
    
public function doCommonAssignments() //make it protected
    
{
        
$this->xt->assign("id"$this->id);
        
$this->xt->assign("left_block"true);
        
        
$this->assignBody();
        
        
$this->setLangParams();

        
//set the Search panel
        
$this->xt->assign("searchPanel"true);
        
        if( 
$this->isShowMenu() )
            
$this->xt->assign("menu_block"true);
    
        if( 
$this->mobileTemplateMode() )
            
$this->xt->assign('tableinfomobile_block'true);


        
$allow_search true;
        
$allow_export true;

        
$this->xt->assign("grid_block"$allow_search);            
        
$this->xt->assign("toplinks_block"$allow_search);
        
$this->xt->assign("asearch_link"$allow_search);
        
        
$this->xt->assign("print_link"$allow_export);
        
$this->xt->assign("printlink_attrs""id=print_".$this->id." href='#'");
        
$this->xt->assign("printalllink_attrs""id=printAll_".$this->id." href='#'");
        
        
$this->xt->assign("excellink_attrs""id=export_to_excel".$this->id." href='#'");
        
$this->xt->assign("wordlink_attrs""id=export_to_word".$this->id." href='#'");
        
$this->xt->assign("pdflink_attrs""id=export_to_pdf".$this->id." href='#'");
        
        
$this->xt->assign("advsearchlink_attrs""id=\"advButton".$this->id."\"");
        
        if( 
$this->noRecordsFound )
        {
            if( !
$this->isPD() ) {
                
$this->xt->assign("container_grid"false); //??
                
$this->xt->assign("grid_block"false);
            }
            
$this->showNoRecordsMessage();
        }
    }
    
    
/**
     * Add common javascript files and code
     */
    
function addCommonJs() 
    {
        
parent::addCommonJs();
        
        if( 
$this->allDetailsTablesArr )
        {
            
$this->AddCSSFile("include/jquery-ui/smoothness/jquery-ui.min.css");
            
$this->AddCSSFile("include/jquery-ui/smoothness/jquery-ui.theme.min.css");
        }
    }
    
    
/**
     *
     */
    
protected function assignBody()
    {        
        
$this->body["begin"].= GetBaseScriptsForPage$this->isDisplayLoading );

        if( 
$this->mode == REPORT_SIMPLE && !$this->mobileTemplateMode() )
            
$this->body["begin"].= "<div id=\"search_suggest\" class=\"search_suggest\"></div>";
    
        
// assign body end in such way, to prevent collisions with flyId increment 
        
$this->body['end'] = XTempl::create_method_assignment"assignBodyEnd"$this);

        
$this->xt->assignbyref("body"$this->body);        
    }
    
    
/**
     *
     */
    
public function beforeShowReport()
    {
        if( 
$this->eventsObject->exists("BeforeShowReport") )
            
$this->eventsObject->BeforeShowReport($this->xt$this->templatefile$this);    
    }
    
    
/**
     * Display the report page
     */
    
public function showPage()
    {
        
$this->beforeShowReport();

        if( 
$this->mode == REPORT_SIMPLE 
        {
            
$this->display$this->templatefile );
            return;
        }        
    
        
$this->body["begin"] = '';
        
$this->body["end"] = '';
        
$this->xt->assign("body"$this->body);    
        
        
$this->xt->assign("header"false);
        
$this->xt->assign("footer"false);
    
        if( 
$this->mode == REPORT_DASHBOARD )
        {    
            
$bricksExcept = array("grid""pagination""details_found""message");    
            
$this->xt->hideAllBricksExcept($bricksExcept);            
            
            
$this->xt->prepare_template$this->templatefile );
            
            
$this->addControlsJSAndCSS();
            
$this->fillSetCntrlMaps();
            
            
$returnJSON = array();
            global 
$pagesData;
            
$returnJSON["pagesData"] = $pagesData;
            
$returnJSON['settings'] = $this->jsSettings;
            
$returnJSON['controlsMap'] = $this->controlsHTMLMap;
            
$returnJSON['viewControlsMap'] = $this->viewControlsHTMLMap;

            if( 
$this->formBricks["footer"] )
                
$returnJSON["footerCont"] = $this->fetchBlocksList$this->formBricks["footer"], true );
            if( 
$this->formBricks["header"] )
                
$returnJSON["headerCont"] = $this->fetchBlocksList$this->formBricks["header"], true );

            
//    prepend headerCont with the page title
            
$returnJSON['headerCont'] = '<span class="rnr-dbebrick">' 
                
$this->getPageTitle$this->pageTypeGoodFieldName($this->tName) ) 
                . 
"</span>"
                
$returnJSON['headerCont'];
                
            
$this->assignFormFooterAndHeaderBricks(false);
            
$this->xt->prepareContainers();
            if( 
$this->isBootstrap() )
                
$returnJSON["html"] = $this->xt->fetch_loaded("message_block").$this->xt->fetch_loaded("grid_block");
            else
                
$returnJSON["html"] = $this->xt->fetch_loaded("body");
            
            
$returnJSON['idStartFrom'] = $this->flyId;
            
$returnJSON['success'] = true;
            
            
$returnJSON["additionalJS"] = $this->grabAllJsFiles();
            
$returnJSON["CSSFiles"] = $this->grabAllCSSFiles();

            echo 
printJSON($returnJSON);            
            exit();
            return;        
        }        
        
        if( 
$this->mode == REPORT_DETAILS || $this->mode == REPORT_DASHDETAILS )
        {
            
$this->showDpAjax();
            exit();
            return;
        }
    
        if( 
$this->mode && $this->mode == "listdetailspopup" //a currently unused option
        
{
            
$bricksExcept = array("grid""pagination");
            
$this->xt->assign("container_master"false);

            
$this->xt->assign("cross_controls"false);
            
$this->xt->hideAllBricksExcept($bricksExcept);
            
$this->xt->prepare_template($this->templatefile);
            
$respArr = array();
            
$respArr['success'] = true;    
            
$respArr['body'] = $this->xt->fetch_loaded("body");
            
$respArr['counter'] = postvalue('counter');

            echo 
printJSON($respArr);
            exit();
            return;
        }
    }
    
    
/**
     * Display the inline report preview in respone on an ajax-like request
     */
    
protected function showDpAjax()
    {        
        
$returnJSON = array();
        
        if( 
$this->mode == REPORT_DETAILS 
            
&& $this->dashTName 
            
&& $this->dashElementName 
            
&& !$this->shouldDisplayDetailsPage() 
            && (
$this->masterPageType == PAGE_EDIT ||  $this->masterPageType == PAGE_VIEW
            )
        {
            
$returnJSON['noData'] = true;
            echo 
printJSON$returnJSON );            
            return;
        }
        
        if( 
$this->mode == REPORT_DETAILS 
            
&& $this->masterPageType == PAGE_LIST 
            
&& !$this->shouldDisplayDetailsPage()
            ) 
        {
            
$returnJSON['success'] = false;
            echo 
printJSON$returnJSON );            
            return;
        }
        
        
$this->xt->unassign("cross_controls");
        
        
$this->hideElement("printpanel");
        
        
$bricksExcept = array("grid""pagination""message" );    
        if( 
$this->mode != REPORT_DETAILS )
        {
            
$bricksExcept[] = "details_found";
        }

        
$bricksExcept[] = "bsgrid_tabs";
        
        
$this->xt->hideAllBricksExcept($bricksExcept);
        
        
$this->xt->prepare_template$this->templatefile );

        
$this->addControlsJSAndCSS();
        
$this->fillSetCntrlMaps();
        
        global 
$pagesData;
        
$returnJSON["pagesData"] = $pagesData;
        
$returnJSON['settings'] = $this->jsSettings;
        
$returnJSON['controlsMap'] = $this->controlsHTMLMap;
        
$returnJSON['viewControlsMap'] = $this->viewControlsHTMLMap;
                    
        if( 
$this->formBricks["footer"] )
            
$returnJSON["footerCont"] = $this->fetchBlocksList$this->formBricks["footer"], true );
        if( 
$this->formBricks["header"] )
            
$returnJSON["headerCont"] = $this->fetchBlocksList$this->formBricks["header"], true );

        if( 
$this->mode == REPORT_DETAILS && ( $this->masterPageType == PAGE_LIST || $this->masterPageType == PAGE_REPORT || $this->masterPageType == PAGE_CHART ) )
        {        
            
$returnJSON['headerCont'] = $this->getProceedLink()    . $returnJSON['headerCont'];
        }
        else if( 
$this->mode == REPORT_DASHDETAILS )
        {
            
//    prepend headerCont with the page title
            
$returnJSON['headerCont'] = '<span class="rnr-dbebrick">' 
                
$this->getPageTitle$this->pageTypeGoodFieldName($this->tName) ) 
                . 
"</span>"
                
$returnJSON['headerCont'];
        }
        
        
$this->assignFormFooterAndHeaderBricks(false);
        
$this->xt->prepareContainers();
        if( 
$this->isBootstrap() )
        {
            
$returnJSON["html"] = $this->xt->fetch_loaded("grid_tabs"). 
                
//$this->xt->fetch_loaded("message_block"). 
                
$this->xt->fetch_loaded("grid_block"). 
                
$this->xt->fetch_loaded("pagination_block");    
        }
        else
            
$returnJSON["html"] = $this->xt->fetch_loaded("body");
        
$returnJSON['success'] = true;
        
$returnJSON['id'] = $this->id;
        
$returnJSON['idStartFrom'] = $this->flyId;    
        
        
$returnJSON["additionalJS"] = $this->grabAllJsFiles();
        
$returnJSON["additionalCSS"] = $this->grabAllCSSFiles();

        echo 
printJSON$returnJSON );            
    }
    
    
/**
     *
     */
    
function printAvailable() 
    {
        if( 
$this->mode == REPORT_DASHBOARD || $this->mode == REPORT_DETAILS || $this->mode == REPORT_DASHDETAILS )
            return 
false;
        return 
RunnerPage::printAvailable();
    }
    
    
/**
     * Show a detail preview page
     * @param Array params - asp compatibility issue
     */
    
function showPageDp($params "")
    {
        if( 
$this->crossTable )
            
$this->xt->unassign("cross_controls");
        
        
parent::showPageDp$params );
    }

    public function 
prepareDisplayDetails() {
        if ( 
$this->isPD() )
        {
            
$this->prepareDisplayDetailsPD();
            return;
        }        
        
        
$contents $this->xt->fetch_loaded("grid_block");
        
$contents $this->xt->fetch_loaded("grid_tabs").$contents;
        
$contents.= $this->xt->fetch_loaded("pagination_block");
        
        
$this->renderedBody '<div id="detailPreview'.$this->id.'">'.$contents.'</div>';
    }

    public function 
prepareDisplayDetailsPD()
    {        
        if( 
$this->pdfJsonMode() ) 
        {
            
$this->xt->assign("embedded_grid"true );
            
$this->xt->load_templateJSON$this->templatefile);
            
$this->renderedBody $this->xt->fetch_loadedJSON("body");
            return;
        }
                
        
$forms = array( "grid" );
        
$bodyContents $this->fetchForms($forms);        
        
$this->renderedBody '<div id="detailPreview'.$this->id.'">'.$bodyContents.'</div>';    
    }

    public function 
showGridOnly() 
    {            
        echo 
$this->renderedBody;
    }

    
/**
    *
    */
    
function shouldDisplayDetailsPage()
    {
        if( !
$this->permis[$this->tName]['search'] )
            return 
false;
        
        if( 
$this->noRecordsFound && == $this->getGridTabsCount() )
            return 
false;
        
        return 
true;
    }
    
    
/**
     * @param String field
     * @return String
     */
    
protected function getFieldClass$field )
    {
        
$class parent::fieldClass$field );

        if( 
$this->crossTable ) {
            if( 
in_array$this->pSet->getViewFormat$field ), array( FORMAT_DATE_SHORTFORMAT_DATE_LONGFORMAT_DATE_TIME ) ) )
                return 
$class." rnr-field-crossdate";
        }
            
        return 
$class;
    }
    
    
/**
     * @return String
     */
    
public static function readReportModeFromRequest()
    {
        
$mode postvalue("mode");
        if( 
$mode == "listdetails" )
            
$pageMode REPORT_DETAILS
        else if( 
$mode == "listdetailspopup" )
            
$pageMode REPORT_POPUPDETAILS;
        else if( 
$mode == "dashreport" )
            
$pageMode REPORT_DASHBOARD;
        else if ( 
$mode == "dashdetails" )
            
$pageMode REPORT_DASHDETAILS;    
        else 
            
$pageMode REPORT_SIMPLE;

        return 
$pageMode;
    }

    function 
gridTabsAvailable() {
        return 
true;
    }

    function 
displayTabsInPage() 
    {
        return 
$this->simpleMode() || ( $this->mode == REPORT_DETAILS && ($this->masterPageType == PAGE_VIEW || $this->masterPageType == PAGE_EDIT));
    }
    
    function 
renderPageBody() 
    {
        if( !
$this->isBootstrap() )
            return 
parent::renderPageBody();
        
        
$blocks = array("grid_tabs""message""grid_block""pagination_block");
        return 
$this->fetchBlocksList($blocksfalse);

    }

    protected function 
assignColumnHeaderClasses()
    {
        
$reportFields $this->pSet->getFieldsList();
        foreach( 
$reportFields as $field )
        {
            
$goodName GoodFieldname($field);
            
$this->xt->assign("fieldclass_".$goodName$this->getFieldClass($field) ); 
            
$this->xt->assign($goodName "_align"$this->fieldAlign($field));

        }
    }
    
    function 
pdfJsonMode() 
    {
        return 
$this->pdfJson;
    }    
}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.005 ]--