Beispiel #1
0
     // MS-IIS set these header values with no-cache... while Excel fails to do the job if using HTTPS
     // Then the fix is to force the reset of header values Pragma and Cache-control
     header("Pragma:", true);
     header("Cache-control:", true);
     $sFields = implode(',', $aFields);
     $oP->add_style('table br {mso-data-placement:same-cell;}');
     // Trick for Excel: keep line breaks inside the same cell !
     cmdbAbstractObject::DisplaySetAsHTMLSpreadsheet($oP, $oSet, array('fields' => $sFields, 'fields_advanced' => $bFieldsAdvanced, 'localize_values' => $bLocalize));
     break;
 case 'xml':
     $oP = new XMLPage("iTop - Export", true);
     cmdbAbstractObject::DisplaySetAsXML($oP, $oSet, array('localize_values' => $bLocalize));
     break;
 case 'xlsx':
     $oP = new ajax_page('');
     $oExporter = new ExcelExporter();
     $oExporter->SetObjectList($oFilter);
     // Run the export by chunk of 1000 objects to limit memory usage
     $oExporter->SetChunkSize(1000);
     do {
         $aStatus = $oExporter->Run();
         // process one chunk
     } while ($aStatus['code'] != 'done' && $aStatus['code'] != 'error');
     if ($aStatus['code'] == 'done') {
         $oP->SetContentType('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
         $oP->SetContentDisposition('attachment', $oFilter->GetClass() . '.xlsx');
         $oP->add(file_get_contents($oExporter->GetExcelFilePath()));
         $oExporter->Cleanup();
     } else {
         $oP->add('Error, xlsx export failed: ' . $aStatus['message']);
     }
    public function Top_Department()
    {
        $bl = new BLogger();
        $beginDate = addslashes($_GET['begindate']);
        if ($beginDate == "") {
            $month = date("n");
            $day = 1;
            $year = date("Y");
            $timeAwal = mktime(0, 0, 0, $month, $day, $year);
            $timeAkhir = mktime(0, 0, 0, $month + 1, $day, $year);
            $mon = $month;
            $y = $year;
            $timeAwalText = date("Y") . "-" . date("m") . "-01 00:00:00";
            $ts = mktime(0, 0, 0, date("n") + 1, 1, date("Y"));
            $timeAkhirText = date("Y-m-d H:i:s", $ts);
        } else {
            $timeAwalText = $beginDate . " 00:00:00";
            $bgindatestr = strtotime($beginDate);
            $mon = date("n", $bgindatestr);
            $y = date("Y", $bgindatestr);
            $ts = mktime(0, 0, 0, $mon + 1, 1, $y);
            $timeAkhirText = date("Y-m-d H:i:s", $ts);
            $year = $y;
        }
        /*echo $timeAwal;
          echo "<br>";
          echo $timeAkhir;
          */
        ?>
        <h1>Top Department</h1>    
         <?php 
        $text = "(b_log_time BETWEEN '{$timeAwalText}' AND '{$timeAkhirText}')";
        $textAs = "b_timestamp >= {$timeAwal} AND b_timestamp < {$timeAkhir}";
        // echo "<br>";
        // echo $text;
        $arrLogs = $bl->getWhere("{$text} ORDER BY b_timestamp ASC");
        //pr($arrLogs);
        foreach ($arrLogs as $h) {
            if ($h->log_user_org == "" || $h->log_user_org == 0) {
                continue;
            }
            $newArr["org_" . $h->log_user_org][] = $h;
        }
        foreach ($newArr as $url => $n) {
            $newArrs[$url] = count($n);
        }
        asort($newArrs);
        $jadi = array_reverse($newArrs);
        // pr($newArr);
        $t = time();
        //pr($jadi);
        ?>
<div class="table-responsive">
    <form class="form-inline">
  <div class="form-group">
    <label for="monselection_<?php 
        echo $t;
        ?>
">Select Month</label>
    <select class="form-control" id="monselection_<?php 
        echo $t;
        ?>
"><?php 
        $beginyear = date("Y") - 5;
        $endyear = date("Y");
        $beginyear = 2015;
        $mons = array(1 => "Jan", 2 => "Feb", 3 => "Mar", 4 => "Apr", 5 => "May", 6 => "Jun", 7 => "Jul", 8 => "Aug", 9 => "Sep", 10 => "Oct", 11 => "Nov", 12 => "Dec");
        for ($x = $beginyear; $x <= $endyear; $x++) {
            for ($m = 1; $m < 13; $m++) {
                if ($m == $mon && $x == $year) {
                    $select = "selected";
                    echo "in";
                } else {
                    $select = "";
                }
                if ($x == date("Y")) {
                    if ($m > date("n")) {
                        continue;
                    }
                }
                ?>
                <option <?php 
                echo $select;
                ?>
 value="<?php 
                echo $x;
                ?>
-<?php 
                echo $m;
                ?>
-01"><?php 
                echo $x;
                ?>
 <?php 
                echo $mons[$m];
                ?>
 </option>   
                 <?php 
            }
        }
        ?>
    </select> 
  </div>
 <button class="btn btn-default" onclick="window.open('<?php 
        echo _SPPATH . _PHOTOURL . "logs/TopDepartment_" . $year . "_" . $mon;
        ?>
.xls', '_blank');event.preventDefault();">Download</button>
</form>
    <script>
        $('#monselection_<?php 
        echo $t;
        ?>
').change(function(){
            var slc = $('#monselection_<?php 
        echo $t;
        ?>
').val();
            openLw('Top_Department','<?php 
        echo _SPPATH;
        ?>
BLoggerWeb/Top_Department?begindate='+slc,'fade'); 
        });
        </script>
    <div style="padding: 10px;"></div>
    <table class="table table-bordered">
        <thead>
            <tr>
                <th>Rank</th>
                
                <th>Department</th>
                <th>URL</th>
                <th>No.Visits</th>
            </tr>
        </thead>
        <?php 
        $num = 0;
        $arrExcel = array();
        $arrExcel2 = array();
        $arrExcel[] = "Rank;Department;No.Visits";
        foreach ($jadi as $url => $n) {
            $alog = $newArr[$url];
            $num++;
            $dp = new RoleOrganization();
            $id = explode("_", $url);
            //pr($id);
            $dp->getByID($id[1]);
            $arrExcel[] = "{$num};{$dp->organization_name};{$n}";
            ?>
        <tr>
            <td><?php 
            echo $num;
            ?>
</td>
            <td><span style="cursor:pointer; text-decoration: underline;" onclick="$('.detail_<?php 
            echo $url;
            ?>
').toggle();"><?php 
            echo $dp->organization_name;
            ?>
</span></td>    
            <td></td>
            <td><?php 
            echo $n;
            ?>
</td>
        </tr>
        <?php 
            $obje = array();
            $obje["Rank"] = $num;
            $obje["Department"] = $dp->organization_name;
            $obje["URL"] = "";
            $obje["No Visits"] = $n;
            $arrExcel2[] = $obje;
            $key = $url;
            $newArr_dalam = array();
            foreach ($alog as $h) {
                $newArr_dalam[$h->b_log_url][] = $h;
            }
            $newArrs_dalam = array();
            foreach ($newArr_dalam as $url => $n) {
                $newArrs_dalam[$url] = count($n);
            }
            asort($newArrs_dalam);
            $jadi_dalam = array_reverse($newArrs_dalam);
            ?>
        <?php 
            $num_dalam = 0;
            foreach ($jadi_dalam as $url_dalam => $n_dalam) {
                $num_dalam++;
                ?>
        <tr  class="detail_<?php 
                echo $key;
                ?>
" style="display:none;">
            <td></td>
            <td></td>
            <td><?php 
                echo $url_dalam;
                ?>
 <a href="<?php 
                echo $url_dalam;
                ?>
" target="_blank">link</a></td>           
            <td><?php 
                echo $n_dalam;
                ?>
</td>
        </tr>
        <?php 
                $obje2 = array();
                $obje2["Rank"] = " ";
                $obje2["Department"] = " ";
                $obje2["URL"] = $url_dalam;
                $obje2["No Visits"] = $n_dalam;
                $arrExcel2[] = $obje2;
            }
            ?>
        
        <?php 
        }
        ?>
    </table>
</div>    
         <?php 
        /*
                $fname = "TopDepartment_".$year."_".$mon. ".csv";
                $file = fopen(_PHOTOPATH . "logs/" . $fname, "w+");
        
                foreach ($arrExcel as $line) {
                        fputcsv($file, explode(';', $line));
                }
        
                fclose($file);*/
        $fname = _PHOTOPATH . "logs/" . "TopDepartment_" . $year . "_" . $mon . ".xls";
        ExcelExporter::saveIt($arrExcel2, $fname);
    }
Beispiel #3
0
     $bAdvanced = utils::ReadParam('advanced', 'false') == 'true';
     $oSearch = DBObjectSearch::unserialize($sFilter);
     $oExcelExporter = new ExcelExporter();
     $oExcelExporter->SetObjectList($oSearch);
     //$oExcelExporter->SetChunkSize(10); //Only for testing
     $oExcelExporter->SetAdvancedMode($bAdvanced);
     $sToken = $oExcelExporter->SaveState();
     $oPage->add(json_encode(array('status' => 'ok', 'token' => $sToken)));
     break;
 case 'xlsx_run':
     $sMemoryLimit = MetaModel::GetConfig()->Get('xlsx_exporter_memory_limit');
     ini_set('memory_limit', $sMemoryLimit);
     ini_set('max_execution_time', max(300, ini_get('max_execution_time')));
     // At least 5 minutes
     $sToken = utils::ReadParam('token', '', false, 'raw_data');
     $oExcelExporter = new ExcelExporter($sToken);
     $aStatus = $oExcelExporter->Run();
     $aResults = array('status' => $aStatus['code'], 'percentage' => $aStatus['percentage'], 'message' => $aStatus['message']);
     if ($aStatus['code'] == 'done') {
         $aResults['statistics'] = $oExcelExporter->GetStatistics('html');
     }
     $oPage->add(json_encode($aResults));
     break;
 case 'xlsx_download':
     $sToken = utils::ReadParam('token', '', false, 'raw_data');
     $oPage->SetContentType('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
     $oPage->SetContentDisposition('attachment', 'export.xlsx');
     $sFileContent = ExcelExporter::GetExcelFileFromToken($sToken);
     $oPage->add($sFileContent);
     ExcelExporter::CleanupFromToken($sToken);
     break;