ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:24.36 GB of 70.42 GB (34.59%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

/ http/ map/ site/ sql_control/ libraries/ export/ - drwxr-sr-x

Directory:
Viewing file:     pdf.php (15.16 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Produce a PDF report (export) from a query
 *
 * @package phpMyAdmin-Export-PDF
 */
if (! defined('PHPMYADMIN')) {
    exit;
}

/**
 *
 */
if (isset($plugin_list)) {
    
$plugin_list['pdf'] = array(
        
'text' => __('PDF'),
        
'extension' => 'pdf',
        
'mime_type' => 'application/pdf',
        
'force_file' => true,
        
'options' => array(
            array(
'type' => 'begin_group''name' => 'general_opts'),
            array(
'type' => 'message_only''name' => 'explanation''text' => __('(Generates a report containing the data of a single table)')),
            array(
'type' => 'text''name' => 'report_title''text' => __('Report title:')),
            array(
'type' => 'hidden''name' => 'structure_or_data'),
            array(
'type' => 'end_group')
            ),
        
'options_text' => __('Options'),
        );
} else {

/**
 * Font used in PDF.
 *
 * @todo Make this configuratble (at least Sans/Serif).
 */
define('PMA_PDF_FONT''DejaVuSans');
require_once 
'./libraries/tcpdf/tcpdf.php';

/**
 * Adapted from a LGPL script by Philip Clarke
 * @package phpMyAdmin-Export-PDF
 */
class PMA_PDF extends TCPDF
{
    var 
$tablewidths;
    var 
$headerset;
    var 
$footerset;

    function 
checkPageBreak($h=0$y=''$addpage=true) {
        if (
$this->empty_string($y)) {
            
$y $this->y;
        }
        
$current_page $this->page;
        if (((
$y $h) > $this->PageBreakTrigger) AND (!$this->InFooter) AND ($this->AcceptPageBreak())) {
            if (
$addpage) {
                
//Automatic page break
                
$x $this->x;
                
$this->AddPage($this->CurOrientation);
                
$this->$this->dataY;
                
$oldpage $this->page 1;
                if (
$this->rtl) {
                    if (
$this->pagedim[$this->page]['orm'] != $this->pagedim[$oldpage]['orm']) {
                        
$this->$x - ($this->pagedim[$this->page]['orm'] - $this->pagedim[$oldpage]['orm']);
                    } else {
                        
$this->$x;
                    }
                } else {
                    if (
$this->pagedim[$this->page]['olm'] != $this->pagedim[$oldpage]['olm']) {
                        
$this->$x + ($this->pagedim[$this->page]['olm'] - $this->pagedim[$oldpage]['olm']);
                    } else {
                        
$this->$x;
                    }
                }
            }
            return 
true;
        }
        if (
$current_page != $this->page) {
            
// account for columns mode
            
return true;
        }
        return 
false;
    }

    function 
Header()
    {
        global 
$maxY;
        
// Check if header for this page already exists
        
if (!isset($this->headerset[$this->page])) {
            
$fullwidth 0;
            foreach (
$this->tablewidths as $width) {
                
$fullwidth += $width;
            }
            
$this->SetY(($this->tMargin) - ($this->FontSizePt/$this->k)*3);
            
$this->cellFontSize $this->FontSizePt ;
            
$this->SetFont(PMA_PDF_FONT'', ($this->titleFontSize $this->titleFontSize $this->FontSizePt));
            
$this->Cell(0$this->FontSizePt$this->titleText01'C');
            
$this->SetFont(PMA_PDF_FONT''$this->cellFontSize);
            
$this->SetY(($this->tMargin) - ($this->FontSizePt/$this->k)*1.5);
            
$this->Cell(0$this->FontSizePt__('Database') .': ' .$this->currentDb .',  ' .__('Table') .': ' .$this->currentTable01'L');
            
$l = ($this->lMargin);
            foreach (
$this->colTitles as $col => $txt) {
                
$this->SetXY($l, ($this->tMargin));
                
$this->MultiCell($this->tablewidths[$col], $this->FontSizePt$txt);
                
$l += $this->tablewidths[$col] ;
                
$maxY = ($maxY $this->getY()) ? $this->getY() : $maxY ;
            }
            
$this->SetXY($this->lMargin$this->tMargin);
            
$this->setFillColor(200200200);
            
$l = ($this->lMargin);
            foreach (
$this->colTitles as $col => $txt) {
                
$this->SetXY($l$this->tMargin);
                
$this->cell($this->tablewidths[$col], $maxY-($this->tMargin), ''10'L'1);
                
$this->SetXY($l$this->tMargin);
                
$this->MultiCell($this->tablewidths[$col], $this->FontSizePt$txt0'C');
                
$l += $this->tablewidths[$col];
            }
            
$this->setFillColor(255255255);
            
// set headerset
            
$this->headerset[$this->page] = 1;
        }

        
$this->dataY $maxY;
    }

    function 
Footer()
    {
        
// Check if footer for this page already exists
        
if (!isset($this->footerset[$this->page])) {
            
$this->SetY(-15);
            
//Page number
            
$this->SetFont(PMA_PDF_FONT''14);
            
$this->Cell(06__('Page number:') . ' ' $this->getAliasNumPage() . '/' .  $this->getAliasNbPages(), 'T'0'C');

            
// set footerset
            
$this->footerset[$this->page] = 1;
        }
    }

    function 
morepagestable($lineheight=8)
    {
        
// some things to set and 'remember'
        
$l $this->lMargin;
        
$startheight $h $this->dataY;
        
$startpage $currpage $this->page;

        
// calculate the whole width
        
$fullwidth 0;
        foreach (
$this->tablewidths as $width) {
            
$fullwidth += $width;
        }

        
// Now let's start to write the table
        
$row 0;
        
$tmpheight = array();
        
$maxpage $this->page;

        while (
$data PMA_DBI_fetch_row($this->results)) {
            
$this->page $currpage;
            
// write the horizontal borders
            
$this->Line($l$h$fullwidth+$l$h);
            
// write the content and remember the height of the highest col
            
foreach ($data as $col => $txt) {
                
$this->page $currpage;
                
$this->SetXY($l$h);
                if (
$this->tablewidths[$col] > 0) {
                    
$this->MultiCell($this->tablewidths[$col], $lineheight$txt0$this->colAlign[$col]);
                    
$l += $this->tablewidths[$col];
                }

                if (!isset(
$tmpheight[$row.'-'.$this->page])) {
                    
$tmpheight[$row.'-'.$this->page] = 0;
                }
                if (
$tmpheight[$row.'-'.$this->page] < $this->GetY()) {
                    
$tmpheight[$row.'-'.$this->page] = $this->GetY();
                }
                if (
$this->page $maxpage) {
                    
$maxpage $this->page;
                }
                unset(
$data[$col]);
            }

            
// get the height we were in the last used page
            
$h $tmpheight[$row.'-'.$maxpage];
            
// set the "pointer" to the left margin
            
$l $this->lMargin;
            
// set the $currpage to the last page
            
$currpage $maxpage;
            unset(
$data[$row]);
            
$row++;
        }
        
// draw the borders
        // we start adding a horizontal line on the last page
        
$this->page $maxpage;
        
$this->Line($l$h$fullwidth+$l$h);
        
// now we start at the top of the document and walk down
        
for ($i $startpage$i <= $maxpage$i++) {
            
$this->page $i;
            
$l $this->lMargin;
            
$t = ($i == $startpage) ? $startheight $this->tMargin;
            
$lh = ($i == $maxpage) ? $h $this->h-$this->bMargin;
            
$this->Line($l$t$l$lh);
            foreach (
$this->tablewidths as $width) {
                
$l += $width;
                
$this->Line($l$t$l$lh);
            }
        }
        
// set it to the last page, if not it'll cause some problems
        
$this->page $maxpage;
    }

    function 
setAttributes($attr = array())
    {
        foreach (
$attr as $key => $val){
            
$this->$key $val ;
        }
    }

    function 
setTopMargin($topMargin)
    {
        
$this->tMargin $topMargin;
    }

    function 
mysql_report($query)
    {
        unset(
$this->tablewidths);
        unset(
$this->colTitles);
        unset(
$this->titleWidth);
        unset(
$this->colFits);
        unset(
$this->display_column);
        unset(
$this->colAlign);

        
/**
         * Pass 1 for column widths
         */
        
$this->results PMA_DBI_query($querynullPMA_DBI_QUERY_UNBUFFERED);
        
$this->numFields  PMA_DBI_num_fields($this->results);
        
$this->fields PMA_DBI_get_fields_meta($this->results);

        
// sColWidth = starting col width (an average size width)
        
$availableWidth $this->$this->lMargin $this->rMargin;
        
$this->sColWidth $availableWidth $this->numFields;
        
$totalTitleWidth 0;

        
// loop through results header and set initial col widths/ titles/ alignment
        // if a col title is less than the starting col width, reduce that column size
        
for ($i 0$i $this->numFields$i++){
            
$stringWidth $this->getstringwidth($this->fields[$i]->name) + ;
            
// save the real title's width
            
$titleWidth[$i] = $stringWidth;
            
$totalTitleWidth += $stringWidth;

            
// set any column titles less than the start width to the column title width
            
if ($stringWidth $this->sColWidth){
                
$colFits[$i] = $stringWidth ;
            }
            
$this->colTitles[$i] = $this->fields[$i]->name;
            
$this->display_column[$i] = true;

            switch (
$this->fields[$i]->type){
            case 
'int':
                
$this->colAlign[$i] = 'R';
                break;
            case 
'blob':
            case 
'tinyblob':
            case 
'mediumblob':
            case 
'longblob':
                
/**
                 * @todo do not deactivate completely the display
                 * but show the field's name and [BLOB]
                 */
                
if (stristr($this->fields[$i]->flags'BINARY')) {
                    
$this->display_column[$i] = false;
                    unset(
$this->colTitles[$i]);
                }
                
$this->colAlign[$i] = 'L';
                break;
            default:
                
$this->colAlign[$i] = 'L';
            }
        }

        
// title width verification
        
if ($totalTitleWidth $availableWidth) {
            
$adjustingMode true;
        } else {
            
$adjustingMode false;
            
// we have enough space for all the titles at their
            // original width so use the true title's width
            
foreach ($titleWidth as $key => $val) {
                
$colFits[$key] = $val;
            }
        }

        
// loop through the data; any column whose contents
        // is greater than the column size is resized
        /**
          * @todo force here a LIMIT to avoid reading all rows
          */
        
while ($row PMA_DBI_fetch_row($this->results)) {
            foreach (
$colFits as $key => $val) {
                
$stringWidth $this->getstringwidth($row[$key]) + ;
                if (
$adjustingMode && ($stringWidth $this->sColWidth)) {
                
// any column whose data's width is bigger than the start width is now discarded
                    
unset($colFits[$key]);
                } else {
                
// if data's width is bigger than the current column width,
                // enlarge the column (but avoid enlarging it if the
                // data's width is very big)
                        
if ($stringWidth $val && $stringWidth < ($this->sColWidth 3)) {
                        
$colFits[$key] = $stringWidth ;
                    }
                }
            }
        }

        
$totAlreadyFitted 0;
        foreach (
$colFits as $key => $val){
            
// set fitted columns to smallest size
            
$this->tablewidths[$key] = $val;
            
// to work out how much (if any) space has been freed up
            
$totAlreadyFitted += $val;
        }

        if (
$adjustingMode) {
            
$surplus = (sizeof($colFits) * $this->sColWidth) - $totAlreadyFitted;
            
$surplusToAdd $surplus / ($this->numFields sizeof($colFits));
        } else {
            
$surplusToAdd 0;
        }

        for (
$i=0$i $this->numFields$i++) {
            if (!
in_array($iarray_keys($colFits))) {
                
$this->tablewidths[$i] = $this->sColWidth $surplusToAdd;
            }
            if (
$this->display_column[$i] == false) {
                
$this->tablewidths[$i] = 0;
            }
        }

        
ksort($this->tablewidths);

        
PMA_DBI_free_result($this->results);

        
// Pass 2

        
$this->results PMA_DBI_query($querynullPMA_DBI_QUERY_UNBUFFERED);
        
$this->setY($this->tMargin);
        
$this->AddPage();
        
$this->morepagestable($this->FontSizePt);
        
PMA_DBI_free_result($this->results);

    } 
// end of mysql_report function

// end of PMA_PDF class

$pdf = new PMA_PDF('L''pt''A3');

/**
 * Outputs comment
 *
 * @param   string      Text of comment
 *
 * @return  bool        Whether it suceeded
 */
function PMA_exportComment($text)
{
    return 
TRUE;
}

/**
 * Finalize the pdf.
 *
 * @return  bool        Whether it suceeded
 *
 * @access  public
 */
function PMA_exportFooter()
{
    global 
$pdf;

    
// instead of $pdf->Output():
    
if (!PMA_exportOutputHandler($pdf->getPDFData())) {
        return 
FALSE;
    }

    return 
TRUE;
}

/**
 * Initialize the pdf to export data.
 *
 * @return  bool        Whether it suceeded
 *
 * @access  public
 */
function PMA_exportHeader()
{
    global 
$pdf_report_title;
    global 
$pdf;

    
$pdf->AddFont('DejaVuSans''''dejavusans.php');
    
$pdf->AddFont('DejaVuSans''B''dejavusansb.php');
    
$pdf->AddFont('DejaVuSerif''''dejavuserif.php');
    
$pdf->AddFont('DejaVuSerif''B''dejavuserifb.php');
    
$pdf->SetFont(PMA_PDF_FONT''11.5);
    
$pdf->setFooterFont(array(PMA_PDF_FONT''11.5));
    
$pdf->AliasNbPages();
    
$pdf->Open();

    
$attr=array('titleFontSize' => 18'titleText' => $pdf_report_title);
    
$pdf->setAttributes($attr);
    
$pdf->setTopMargin(45);

    return 
TRUE;
}

/**
 * Outputs database header
 *
 * @param   string      Database name
 *
 * @return  bool        Whether it suceeded
 *
 * @access  public
 */
function PMA_exportDBHeader($db)
{
    return 
TRUE;
}

/**
 * Outputs database footer
 *
 * @param   string      Database name
 *
 * @return  bool        Whether it suceeded
 *
 * @access  public
 */
function PMA_exportDBFooter($db)
{
    return 
TRUE;
}

/**
 * Outputs create database database
 *
 * @param   string      Database name
 *
 * @return  bool        Whether it suceeded
 *
 * @access  public
 */
function PMA_exportDBCreate($db)
{
    return 
TRUE;
}

/**
 * Outputs the content of a table in PDF format
 *
 * @todo    user-defined page orientation, paper size
 * @param   string      the database name
 * @param   string      the table name
 * @param   string      the end of line sequence
 * @param   string      the url to go back in case of error
 * @param   string      SQL query for obtaining data
 *
 * @return  bool        Whether it suceeded
 *
 * @access  public
 */
function PMA_exportData($db$table$crlf$error_url$sql_query)
{
    global 
$pdf;

    
$attr=array('currentDb' => $db'currentTable' => $table);
    
$pdf->setAttributes($attr);
    
$pdf->mysql_report($sql_query);

    return 
TRUE;
// end of the 'PMA_exportData()' function
}
?>
Command:
Quick Commands:
Upload:
[Read-Only] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [Read-Only]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.2485 seconds